2016-01-28 59 views
1

我听说我可以在Dart VM上测试服务(所以没有浏览器)。我想知道我该如何做到这一点。如何测试Dart虚拟机上的角度2服务?

所以说我想测试这一服务:

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

所以这个例子很简单,但对于更复杂的服务类,我会喜欢使用角度2依赖注入。我怎么能这样做?

回答

3

为了测试纯注射服务(即不是组件)所有你需要的是创建一个包含依赖(通常嘲笑)对被测试类的注射器。这里是一个例子:

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'); 
    }); 
    }); 
} 
+0

Injector.resolveAndCreate静态方法不再存在了,不幸的是,不幸的是, –

相关问题