如何在連續調用中允許不同的返回值的FakeItEasy創建一個僞造品。這是我想什麼,能夠做一個例子:因爲它在FakeItEasy中僞造一個枚舉器
var enumerator = A.Fake<IDictionaryEnumerator>();
A.CallTo(() => enumerator.MoveNext()).Returns(true); //Expected value for first call
A.CallTo(() => enumerator.Key).Returns("key1");
A.CallTo(() => enumerator.Value).Returns("value1");
A.CallTo(() => enumerator.MoveNext()).Returns(false); //Expected value for second call
Assert.IsTrue(enumerator.MoveNext()); //Fails
Assert.IsFalse(enumerator.MoveNext());
斷言將失敗的MoveNext的最後一組了將覆蓋第一個。
是否可以在FakeItEasy中做我想要的?
。
[編輯]
澄清原始問題的例子,並提供了一個工作示例如下。
基於Patrik的回答,此代碼顯示瞭如何設置假貨。訣竅是扭轉所有設置並使用Once()
。
var enumerator = A.Fake<IDictionaryEnumerator>();
A.CallTo(() => enumerator.MoveNext()).Returns(false).Once();
A.CallTo(() => enumerator.MoveNext()).Returns(true).NumberOfTimes(2);
A.CallTo(() => enumerator.Key).Returns("key2").Once();
A.CallTo(() => enumerator.Value).Returns("value2").Once();
A.CallTo(() => enumerator.Key).Returns("key1").Once();
A.CallTo(() => enumerator.Value).Returns("value1").Once();
while(enumerator.MoveNext())
{
Debug.WriteLine(enumerator.Key + ": "+ enumerator.Value);
}
這將打印:
key1: value1
key2: value2
是的,你是對的。我在錄製/重放模型之後。有意義FakeItEasy沒有一個。我將編輯我的問題,幷包含一個可以使用兩個MoveNext值的工作示例。謝謝您的幫助。 – hcanber