我正在開發一個.net 2.0項目。我到了需要測試一些需要IEnumerator的類的方法。由於前幾天我學會了用犀牛嘲笑我寫了下面的測試犀牛嘲笑:扼殺一個IEnumerator <T>
[Test]
public void GetEnumerator_ValidList_ReverseIteration()
{
MockRepository mMocks = new MockRepository();
IEnumerator<string> mStubEnumerator = mMocks.Stub<IEnumerator<string>>();
IProcessCommandFactory mStubFactory = mMocks.Stub<IProcessCommandFactory>();
using (mMocks.Record())
{
mStubEnumerator.MoveNext();
LastCall.Return(true);
Expect.Call(mStubEnumerator.Current);
LastCall.Return("Organization");
mStubEnumerator.MoveNext();
LastCall.Return(true);
Expect.Call(mStubEnumerator.Current);
LastCall.Return("Algorithm");
mStubEnumerator.MoveNext();
LastCall.Return(true);
Expect.Call(mStubEnumerator.Current);
LastCall.Return("ProcessTemplate");
mStubEnumerator.MoveNext();
LastCall.Return(false);
}
DeleteStrategy mStrategy= new DeleteStrategy( mStubFactory,
"S1",
true);
mStrategy.Load(mStubEnumerator);
... meaningless code...
}
這是方法的代碼
public void Load(IEnumerator<string> pProcessCommmandNames)
{
while (pProcessCommmandNames.MoveNext())
{
string bCommandName= pProcessCommmandNames.Current;
... doing something with the string...
}
}
當我嘗試運行,它不會停止,因爲它使用只有第一個MoveNext()注入值並開始一個循環。
我會很感激,如果有人可以把我搞錯我做錯了什麼?
感謝
它是什麼你想測試?只需調用MoveNext方法?看起來像「...無代碼的代碼......」是這種方法的重要組成部分,這就是你想要編寫單元測試的。 – PatrickSteele
對不起,我很匆忙,正如你所說,我採取了一條重要的路線。但它幾乎相同。我的方法需要一個來自枚舉器的字符串,並用它來實例化一個類,但似乎我不能存儲IEnumerator的迭代行爲 – Watt