我有一个Angular2应用程序.为了在测试中嘲笑Document对象,我想将其注入到服务中,如:
import { Document } from '??' @Injectable() export class MyService { constructor(document: Document) {} }
角度的Title服务使用内部的getDOM()方法:
有没有简单的方式将文档注入到服务中?此外,我应该如何在provider数组中引用它?
bootstrap(provide(Document,{useClass: MyDocumentImpl})
其中Document是@angular/platform-browser/src/dom/dom_tokens.ts的文件
最后的例子
基于Angular的DomRenderer does it的例子.
我-service.ts:
import { Inject,Injectable} from '@angular/core'; import { DOCUMENT } from '@angular/platform-browser'; @Injectable() export class MyService { constructor(@Inject(DOCUMENT) private document: any) {} }
我-service.spec.ts
import { provide } from '@angular/core'; import { DOCUMENT } from '@angular/platform-browser'; import { MyService } from './my-service'; class MockDocument {} describe('MyService',() => { beforeEachProviders(() => ([ provide(DOCUMENT,{ useClass: MockDocument }),MyService ])); ... });