그래서 내가하는 방법과 클래스가 캐싱과 같은 구현 세부 방법은 다음과 같습니다내가 단위 테스트는 다음과 같이
public class SomeClass
{
...
private SomeDependency m_dependency;
public int DoStuff()
{
int result = 0;
...
int someValue = m_dependency.GrabValue();
...
return result;
}
}
를 내가 때마다 m_dependency.GrabValue()
를 호출하기보다는 그 결정했습니다를, 난 정말 캐시에 원하는 어쨌든 매번 동일한 값을 얻으므로 메모리의 값 (이 클래스의 값)은 (의존성이 사라지고 거의 변경되지 않는 테이블에서 일부 데이터를 가져옵니다).
단위 테스트에서이 새로운 동작을 설명하려고하지만 문제가 발생했습니다. 나는 다음을 시도했다. (RhinoMocks에서 NUnit을 사용하고있다.)
[Test]
public void CacheThatValue()
{
var depend = MockRepository.GeneraMock<SomeDependency>();
depend.Expect(d => d.GrabValue()).Repeat.Once().Return(1);
var sut = new SomeCLass(depend);
int result = sut.DoStuff();
result = sut.DoStuff();
depend.VerifyAllExpectations();
}
그러나 이것은 작동하지 않는다. 이 테스트는 기능을 변경하지 않고 통과합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
미안하지만, 구현 세부 사항을 테스트하는 이유는 무엇입니까? – Robert