在angular-cli单元测试中模拟或覆盖模块导入

时间:2016-10-13 12:04:38

标签: angular karma-runner karma-jasmine angular-cli

嗨我正在使用用angular-cli开发的Angular 2。

我有一个简单的流媒体服务,由导入的流媒体模块组成。我想用另一个模拟模块模拟导入的模块,但无法弄清楚如何。

我的服务类就是这样

import { streaming } from './streaming'

@Injectable()
export class StreamingService {


  constructor() {}

  streaming = streaming;
}

我的测试是标准生成的测试规范文件

import { streaming } from './streaming'
import { mockStreaming } from './mock-streaming'

    describe('Service: Streaming', () => {
      beforeEach(() => {


        spyOn(streaming);
        TestBed.configureTestingModule({
          providers: [StreamingService],
          imports: mockStreaming
        })

     });

我想知道我是否应该将流属性作为构造函数中的参数包含在内,但我不想这样做。

我可以在karma.conf或test.ts文件中做些什么吗?

1 个答案:

答案 0 :(得分:1)

您可以创建MockStreamingService扩展StreamingService

@Injectable()
export class MockStreamingService {


  constructor() {}
  //And then mock methods, properties etc...
}

然后在你的测试中:

describe('Service: Streaming', () => {
  beforeEach(() => {


    spyOn(streaming);
    TestBed.configureTestingModule({
      providers: [{provide:StreamingService, useClass:MockStreamingService}]
    })

 });