2016-01-28 96 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靜態方法不再存在了,不幸的是,不幸的是, –

相關問題