我正在使用 Mockolate 和 flex unit 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);
});
和其他无济于事。当然,我在这里遗漏了一些简单的东西。这看起来应该很容易。
多谢你们,
西奥。