小编Dar*_*rio的帖子

Angular5 TestBed useValue似乎没有注入相同的对象实例

在编写单元测试时,我遇到了一个奇怪的案例,我不知道问题出在哪里。

我已经准备了用于复制的短代码:

TestInjectable-简单的可注入类

@Injectable()
class TestInjectable {
  testProperty = 'testValue';
}
Run Code Online (Sandbox Code Playgroud)

TestComponent-使用TestInjectable的小组件

@Component({
  providers: [TestInjectable],
  template: ''
})
class TestComponent {
  constructor(private injectable: TestInjectable) {
  }

  doTest() {
    return this.injectable.testProperty;
  }
}
Run Code Online (Sandbox Code Playgroud)

单元测试

describe('Test TestComponent', () => {
  beforeEach(async(() => {
    let testInjectableMock: TestInjectable = new TestInjectable();
    testInjectableMock.testProperty = 'valueInMock';

    TestBed.configureTestingModule({
      providers: [{provide: TestInjectable, useValue: testInjectableMock}],
      declarations: [TestComponent]
    }).compileComponents();
  }));

  it('should do something', () => {
    let fixture: ComponentFixture<TestComponent> = TestBed.createComponent(TestComponent);
    let component: TestComponent = fixture.componentInstance;

    expect(component.doTest()).toBe('valueInMock');
  });
});
Run Code Online (Sandbox Code Playgroud)

由于必须 …

unit-testing angular angular5

6
推荐指数
1
解决办法
481
查看次数

标签 统计

angular ×1

angular5 ×1

unit-testing ×1