AS3でのテスト用のモックを作成するためにMockolateとflexユニット4を使用しています。同じ引数を使用してモックで同じメソッドを複数回呼び出し、毎回異なる結果を返したい。基本的な例は次のとおりです。
[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);
});
と他の人は役に立たない。確かに私はここで何か簡単なものが欠けています。これは簡単なはずのようです。
みんなありがとう、
テオ。