我正在测试AngularDart组件。我正在尝试获取模板并将其放在TemplateCache
方法的setUp()
中。为此,我需要注入模板缓存。但是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");
});
});
}
}
在控制台中,您可以看到打印的消息:First,Second,Second,First。
我认为必须是inject
没有返回Future
。我还能做些什么来让框架注入我需要的对象并等待Future
中的setUp()
?
答案 0 :(得分:1)
这就是我需要的。错误是试图从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(_));
});