Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Dart虚拟机上测试angular 2服务?_Dart_Angular - Fatal编程技术网

如何在Dart虚拟机上测试angular 2服务?

如何在Dart虚拟机上测试angular 2服务?,dart,angular,Dart,Angular,我听说我可以在Dart虚拟机上测试服务(所以不用浏览器)。我想知道我怎样才能做到这一点 假设我要测试此服务: @Injectable() class MyService { String greet = 'Hello world'; } 我可以这样测试: import 'package:test/test.dart'; void main() { var myService = new MyService(); test('test greet', () { expec

我听说我可以在Dart虚拟机上测试服务(所以不用浏览器)。我想知道我怎样才能做到这一点

假设我要测试此服务:

@Injectable()
class MyService {
  String greet = 'Hello world';
}
我可以这样测试:

import 'package:test/test.dart';

void main() {
  var myService = new MyService();

  test('test greet', () {
    expect(myService, equals('Hello World'));
  });
}

所以这个例子非常简单,但是对于更复杂的服务类,我想使用angular 2依赖注入。我该怎么做呢?

要测试纯可注入服务(即不是组件),您只需创建一个注入器,该注入器包含测试类的依赖项(通常是模拟项)。以下是一个例子:

import 'package:test/test.dart';
import 'package:angular2/angular2.dart';
import 'package:angular2/src/core/reflection/reflection_capabilities.dart';

@Injectable()
class Foo {
  greet() => 'hi';
}

@Injectable()
class Bar {
  final Foo foo;
  Bar(this.foo);
}

class MockFoo implements Foo {
  greet() => 'bonjour';
}

main() {
  reflector.reflectionCapabilities = new ReflectionCapabilities();
  group('MyService', () {
    Injector inj;

    setUp(() {
      inj = Injector.resolveAndCreate([Bar, provide(Foo, useClass: MockFoo)]);
    });

    test('should work', () {
      Bar testSubject = inj.get(Bar);
      expect(testSubject.foo.greet(), 'bonjour');
    });
  });
}

静态方法Injector.resolveAndCreate已不存在