[英]Mockolate - Calling the same method on a mock with the same arguments but return different results
我正在使用Mockolate和flex單元4為AS3中的測試編寫模擬。 我想在具有相同參數的模擬上多次調用相同的方法,並且每次都返回不同的結果。 一個基本的例子是:
[Rule]
public var mocks:MockolateRule = new MockolateRule();
[Mock(type="strict")]
public var list:IList;
[Test]
public function test():void{
var seq:Sequence = sequence();
expecting(function ():void {
expect(list.getItemAt(0)).returns("Item1").thrice().inSequence(seq);
expect(list.getItemAt(0)).returns("Item2").inSequence(seq);
expect(list.getItemAt(0)).returns("Item3").inSequence(seq);
});
trace(list.getItemAt(0));
trace(list.getItemAt(0));
trace(list.getItemAt(0));
verify(list);
}
這導致:
Item1
Item2
Item2
並且錯誤:
1 unmet Exception
我想要的是
Item1
Item2
Item2
沒有例外,即測試通行證。
我嘗試了一些替代方案,例如:
expecting(function ():void {
expect(list.getItemAt(0)).returns("Item1").inSequence(seq);
expect(list.getItemAt(0)).returns("Item2").inSequence(seq);
expect(list.getItemAt(0)).returns("Item3").inSequence(seq);
});
和其他人無濟於事。 當然,我在這里錯過了一些簡單的東西。 這似乎應該很容易。
多謝你們,
西奧。
這讓我大吃一驚,直到我發現它真的很簡單:只需使用所有預期的返回值作為第一個returns()
語句的參數。
expect(list.getItemAt(0)).returns("Item1", "Item2", "Item3", "Item4").inSequence(seq);
mock將為每個后續調用返回最后一個參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.