所以我有一個方法的類,如下所示:我如何單元測試的實現細節比如緩存
public class SomeClass
{
...
private SomeDependency m_dependency;
public int DoStuff()
{
int result = 0;
...
int someValue = m_dependency.GrabValue();
...
return result;
}
}
而且我已經決定,而不是調用m_dependency.GrabValue()
每一次,我真的想緩存內存中的值(即,在這個類中),因爲我們每次都會得到相同的值(依賴關係從數據表中獲取並從幾乎不會改變的表中獲取)。
我遇到了問題,但試圖在單元測試中描述這種新行爲。我嘗試了以下操作(我正在使用NUnit和RhinoMocks):
[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 2009-07-02 03:38:33