2

我在尝试这种方法expectAsync2,所以出现了这个问题:为什么异步测试通过了,但是显示了一些错误消息?

但似乎我没有正确使用它。有什么好的例子expectAsync2吗?

4

2 回答 2

2

在引用的问题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));
    });

  });
}

你可以检查如果你设置countmaxto会发生什么3

于 2014-01-30T15:27:49.423 回答
0

您可以查看文章Unit Testing with Dart的异步测试部分

于 2014-01-30T15:10:29.777 回答