Я использую Mockolate и flex unit 4 для написания mocks для своих тестов в 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)' first time возвращает «item1», второй раз возвращает «item2», а третий возвращает «item3»? – Kasztan