当使用提供程序时,下面的选项是什么?因为TestBed.get已在角9中被弃用
TestBed.configureTestingModule({
providers: [{ provide: MyClass, useClass: MyStub}]
});
const obj : MyStub = TestBed.get(MyClass);真的是这样还是有更好的办法?
const obj : MyStub = TestBed.inject(MyClass) as unknown as MyStub;发布于 2020-02-18 12:43:12
就所有意图和目的而言,您的MyStub至少应该是一个部分类或一个类,它扩展了它试图模拟的类,否则您的测试是“错误的”,所以如果是这样的话,您可以这样做:
const obj = TestBed.inject(MyClass);如果存根上有不同的属性或不同的函数签名,也可以这样做:
const obj = TestBed.inject<MyStub>(MyClass as any);但是一般来说,你的模仿者应该(部分地)和它所模仿的东西分享相同的签名,这也意味着没有必要去铸造
发布于 2020-11-04 08:32:12
let valueServiceSpy: jasmine.SpyObj<ValueService>;
beforeEach(() => {
const spy = jasmine.createSpyObj('ValueService', ['getValue']);
TestBed.configureTestingModule({
providers: [
{ provide: ValueService, useValue: spy }
]
});
// This is new way to inject Spied Service
valueServiceSpy = TestBed.inject(ValueService) as jasmine.SpyObj<ValueService>;
});然后在测试中
it('#getValue should return stubbed value from a spy', () => {
valueServiceSpy.getValue.and.returnValue(yourValue);
...
});https://stackoverflow.com/questions/60281027
复制相似问题