1
我使用Mockolate和Flex單元4爲AS3中的測試編寫模擬。我想用相同的參數多次調用同一個模擬方法 次,每次返回不同的結果。一個基本的例子是:Mockolate - 使用相同的參數在模擬上調用相同的方法,但返回不同的結果
[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);
});
和其他無濟於事。當然,我在這裏錯過了一些簡單的東西。這個 看起來應該很容易。
謝謝你們,
Theo。
我不確定:如果調用'list.getItemAt(0)'第一次返回「item1」,第二次返回「item2」並且第三次返回「item3」,你是否要斷言? – Kasztan