Skip to main content

모킹

https://darkghosthunter.medium.com/php-10-tips-to-use-for-mockery-33673ba01321

  1. 정적 메서드는 피해라

테스트를 할 때마다 문제가 발생할 수 있는 가능성을 만든다

정적 속성에는 수 많은 문제가 있으며 테스트 가능성도 그 중 하나다. 따라서 정적 속성을 상수처럼 취급하거나, 전체 앱 라이플 사이클에서 한번만 설정해야 하는 값이거나 테스트 내부에서만 독점적으로 취급하지 않는 한 사용하지 말자

다른 방법이 없다면 가능한 한 객체의 원래 상태를 항상 재설정 하자

  1. 구문을 더 짧게 해라

  2. 몇 년 전, Mockery는 테스트 코드에서 유용하지 않은 일부 줄을 제거할 수 있는 expects()및 메서드를 구현했습니다.allows()

기존 구문과 비교했을 때, 새로운 현대 구문은 키보드 입력을 줄여주고 더 이해하기 쉽게 만들어줍니다.

존경받는 개발자라면 모든 메서드에 대해 객체를 모의하고 항상 자체를 반환하라고 말할 것입니다. 이는 메서드 수만큼만 증가하므로 수십 개가 있으면 꽤 지저분해질 수 있습니다.

대신 메서드의 인수를 무시하고도 올바른 순서로 호출되도록 하려는 경우 -> 을 사용하여 모든 메서드를 한 번에 연결할 수 있습니다

. 주문방법 어떤 객체에서는 다른 메소드를 호출한 후에 다른 메소드를 호출하면 역순으로 호출한 경우와 다른 결과가 나옵니다. 예를 들어, 뺄셈 후에 곱하는 것은 뺄셈을 한 다음 곱하는 것과 다릅니다.

이런 경우에 이 ordered()방법을 사용하면 기대 사항이 설정된 순서대로 실행됩니다.

  1. 스파이는 당신의 친구입니다

전체 모의나 부분 모의를 만드는 대신 스파이를 사용할 수 있습니다. 스파이는 객체가 사용된 후 일부 메서드가 호출되었는지 여부를 확인하는 방법입니다.

예상 메서드가 호출되면 반환할 내용을 설정할 기회도 있습니다. 다행히도 Mockery는 andReturnArg()및 를 사용하여 수신한 인수에 따라 반환할 내용을 추가로 수정할 수 있습니다 andReturnUsing().

첫 번째 방법은 인수의 인덱스에 따라 인수를 그대로 반환하는 반면, 두 번째 방법은 최종 결과를 추가로 변경하기 위해 콜백을 허용합니다.