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));
    });

  });
}

countmaxを に設定するとどうなるかを確認できます3

于 2014-01-30T15:27:49.423 に答える