setUp() 方法中的注入导致框架不等待 Future 完成
Injection in the setUp() method causes the framework not to wait for the Future to complete
我正在测试 AngularDart 组件。我正在尝试获取模板并将其放入 setUp()
方法中的 TemplateCache
中。为此,我需要注入模板缓存。然而,setUp()
中的注入使框架继续测试方法,而不是等待 Future
完成。这是一个简化的例子。
import 'dart:async';
import 'package:angular/angular.dart';
import 'package:mock/mock.dart';
import 'package:unittest/unittest.dart';
import 'package:angular/mock/test_injection.dart';
import 'package:angular/mock/module.dart';
import 'package:di/di.dart';
class MyTest {
static main() {
group("SetUp with future that waits", () {
setUp(() {
return new Future.value("First").then((_) => print(_));
});
test("Welcome to the world of tomorrow!", () {
print("Second");
});
});
group("SetUp with future that doesn't wait", () {
setUp(inject((Injector inject) { // injection causes the test to not wait
return new Future.value("First").then((_) => print(_));
}));
test("Welcome to the world of tomorrow!", () {
print("Second");
});
});
}
}
在控制台中您可以看到打印的消息:第一、第二、第二、第一。
我想一定是 inject
没有返回 Future
。我还能做些什么来让框架注入我需要的对象并等待 setUp()
中的 Future
?
这就是我需要的。错误是试图 return 来自 inject
本身的东西。其实就这么简单:
setUp(() {
// ...
inject((Injectable injectable) {
// inject the objects here and save them in variables
});
// work with the variables
return new Future.value("First").then((_) => print(_));
});
我正在测试 AngularDart 组件。我正在尝试获取模板并将其放入 setUp()
方法中的 TemplateCache
中。为此,我需要注入模板缓存。然而,setUp()
中的注入使框架继续测试方法,而不是等待 Future
完成。这是一个简化的例子。
import 'dart:async';
import 'package:angular/angular.dart';
import 'package:mock/mock.dart';
import 'package:unittest/unittest.dart';
import 'package:angular/mock/test_injection.dart';
import 'package:angular/mock/module.dart';
import 'package:di/di.dart';
class MyTest {
static main() {
group("SetUp with future that waits", () {
setUp(() {
return new Future.value("First").then((_) => print(_));
});
test("Welcome to the world of tomorrow!", () {
print("Second");
});
});
group("SetUp with future that doesn't wait", () {
setUp(inject((Injector inject) { // injection causes the test to not wait
return new Future.value("First").then((_) => print(_));
}));
test("Welcome to the world of tomorrow!", () {
print("Second");
});
});
}
}
在控制台中您可以看到打印的消息:第一、第二、第二、第一。
我想一定是 inject
没有返回 Future
。我还能做些什么来让框架注入我需要的对象并等待 setUp()
中的 Future
?
这就是我需要的。错误是试图 return 来自 inject
本身的东西。其实就这么简单:
setUp(() {
// ...
inject((Injectable injectable) {
// inject the objects here and save them in variables
});
// work with the variables
return new Future.value("First").then((_) => print(_));
});