CakePHP의 테스트 메소드 간에 픽스쳐를 동적으로 변경할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/37785

  •  09-06-2019
  •  | 
  •  

문제

테스트 방법 간에 고정 장치를 변경할 수 있습니까?그렇다면 어떻게 해야 합니까?

이 문제에 대한 내 구문은 다음과 같습니다.

cakephp 프레임워크에서는 테이블에 필드를 추가하여 구성된 동작에 대한 테스트를 구축하고 있습니다.이것은 "created"를 추가하는 것과 같은 방식으로 작동하기위한 것입니다. 그리고 "수정됨" 필드는 저장 시 이러한 필드를 자동으로 채웁니다.

이것을 테스트하기 위해 나는 ~할 수 있었다 다양한 설정을 테스트하기 위해 수십 개의 고정 장치/모델 콤보를 생성하지만, 테스트 방법 간에 고정 장치의 "모양"을 변경하는 것이 백 배 더 좋고, 빠르고 쉬울 것입니다.

해당 내용이 익숙하지 않은 경우 CakePHP 프레임워크, 아마 계속해서 저를 도와주실 수 있을 거예요 단순 테스트

편집하다:질문을 좀 더 일반적으로 바꾸었습니다.

도움이 되었습니까?

해결책

나는 CakePHP에 대해 특별히 잘 알지는 못하지만, 이런 종류의 일은 조명기의 어느 곳에서나 일어나는 것 같습니다.

최소한 이런 일이 발생하도록 레일에는 내장된 방법이 없으며, 나는 cakePHP나 다른 어느 곳에서도 그렇지 않다고 생각합니다. 왜냐하면 고정 장치의 전체적인 아이디어는 다음과 같습니다. 결정된

내가 알고 있는 2가지 '괜찮은' 해결 방법이 있습니다.

  • 쓰기 changefixture 메서드를 사용하고 어설션/등을 수행하기 직전에 변경할 항목의 매개변수를 사용하여 실행하세요.가서 데이터베이스를 업데이트하거나 수행해야 할 모든 작업을 수행해야 합니다.

  • 고정물을 전혀 사용하지 말고 일종의 객체 팩토리나 객체 생성기를 사용하여 매번 객체를 생성하세요.

다른 팁

이것은 내 질문에 대한 답변이 아니라 내 문제 예에 대한 해결책입니다.

여러 개의 고정 장치를 사용하거나 고정 장치를 변경하는 대신 테스트하고 싶지 않은 필드를 제거하여 Model::_schema 배열을 편집합니다.이는 모델이 필드가 없는 것처럼 작동하는 효과가 있지만 이것이 100% 테스트인지는 확실하지 않습니다.나는 그것이 모든 경우에 해당한다고 생각하지 않지만 내 예에서는 효과가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top