NMock2.0에 관한 문서에서 알아낼 수없는 질문이 있습니다.NMock -이 params에서 '모든 값'을 기대하십시오. 아니면 내가하지 않아야합니까?
내가 조롱하고 싶은 Save()라는 함수가 있습니다.
Expect.Once.On(dao) _
.Method("Save").With(New Object() {"foo", 1})
그러나이 경우에만 전달이 내가이 저장()가이 개 특정 값으로 호출되는 것을 확인하기 위해 쓸 수 있습니다 알고있는 문자열 매개 변수 및 값으로 진수로 ID ..
소요 "foo"와 1이 전달됩니다. 나는 "foo"라는 값을 제어 할 수 있지만, 두 번째 값은 무엇이 될지 모른다. 또는이 테스트에서 적어도 가치가있는 테스트는 신경 쓰지 않습니다.
는 내가 쓸 수 있습니다 알고
Expect.Once.On(dao) _
.Method("Save").WithAnyArguments()
그러나 이것은 나에게 어떤 가지 인자를 전달 할 수 있습니다; 그래서 저장 인터페이스가 변경되고 나중에 5 개의 매개 변수를 사용하면 내 테스트가 계속 진행됩니다.
적절한 유형의 2 개 매개 변수 만 사용하도록하려면 어떻게해야합니까?
아마도 더 중요한 것은 - 너무 부서지기 쉬운 단위 테스트를 작성하는 것일까 요? 어쩌면 모든 params를 기대하기 위해 코드를 작성해야합니다. 따라서 리팩터링 할 때마다 돌아와서 해당 라인을 변경할 필요가 없습니까? 나는 많은 mock을 사용하는 테스트 케이스가 매우 부서지기 쉽고 언제든지 리펙토링을해야한다는 것을 알게되었다. 나는 그들을 바꿔야 만한다. 아마 여기 mock을 잘못 사용하고 있을까? 이 물건에 아직 꽤 새로운, 그래서 어떤 충고도 크게 감사드립니다.
감사합니다. 이것이 내 'DAO'객체가 모의 객체로 간주된다는 것을 의미합니까? 왜냐하면 내가 그것에 반대한다고 주장하기 때문입니까? 그렇다면 어떻게 NMock에서 '스텁'을 만들어 어설트없이 코드를 컴파일하게 할 수 있습니까? 그냥 할거야 .WithAnyParameters()? 또는이 함수가 호출되지 않으면 VerifyExpectationsHasBeenMet()이 실패하여 모의 (mock)로 간주됩니까? 그렇다면 파울러 (Fowler)가 정의한 '스텁'을 만드는 법? – dferraro
@dferraro to stubs는'Expect.Once'를'Stub'으로 대체하기 때문에 스텁 된 호출은 VerifyExpectationsHasBeenMet에 포함되지 않습니다. – nolith