Я пробовал этот метод expectAsync2
, поэтому возник вопрос: Почему асинхронный тест пройден, но отображаются некоторые сообщения об ошибках?
Но, кажется, я не использовал его правильно. Есть ли хороший пример expectAsync2
?
Я пробовал этот метод expectAsync2
, поэтому возник вопрос: Почему асинхронный тест пройден, но отображаются некоторые сообщения об ошибках?
Но, кажется, я не использовал его правильно. Есть ли хороший пример expectAsync2
?
В указанном вопросе expectAsync
просто использовался для защиты асинхронного вызова, чтобы тест не заканчивался до завершения вызова new Timer(...)
.
Вы можете дополнительно указать, как часто (мин/макс) должен вызываться метод, чтобы выполнить тест. Если ваша протестированная функциональность вызывает метод с более чем одним параметром, вы используете `expectAsync2)
Ошибка в указанном вами вопросе заключалась в том, что ваш звонок expectAsyncX
тоже был отложен. Вызов expectAsyncX
должен быть сделан до того, как будет вызвана асинхронная функциональность, чтобы зарегистрировать, какой метод должен быть вызван.
library x;
import 'dart:async';
import 'package:unittest/unittest.dart';
class SubjectUnderTest {
int i = 0;
doSomething(x, y) {
i++;
print('$x, $y');
}
}
void main(List<String> args) {
test('async test, check a function with 2 parameters', () {
var sut = new SubjectUnderTest();
var fun = expectAsync2(sut.doSomething, count: 2, max: 2, id: 'check doSomething');
new Timer(new Duration(milliseconds:200), () {
fun(1,2);
expect(sut.i, greaterThan(0));
});
new Timer(new Duration(milliseconds:100), () {
fun(3,4);
expect(sut.i, greaterThan(0));
});
});
}
Вы можете проверить, что произойдет, если вы установите count
и max
на 3
.
expect()
?
- person Freewind; 30.01.2014
Вы можете ознакомиться с разделом Асинхронные тесты статья Модульное тестирование с помощью Dart.