我已经成功使用jest-mock-extended来测试服务,并且对我来说效果很好。它简单,易于使用且输入安全。
现在,我必须测试Angular组件。为此,我找到了Spectator。我设法使用该SpectatorHost
功能为没有服务的简单组件编写了测试。现在,我必须使用我应该模拟的服务来测试组件,但是我确实发现很难做到这一点。
出于这个原因,我想知道是否有一种方法可以将用创建的模拟注入到用jest-mock-extended
内部生成的组件中SpectatorHost
。
这样,我还将使用相同的库来模拟项目中的服务。
我发现了如何集成两个库:
describe('MyComponent', () => {
// SpectatorHost object and factory
let host: SpectatorHost<MyComponent>;
const createHost = createHostFactory({
component: MyComponent,
mocks: [MyService], // Automatically mock service used by the component
});
// MockProxy object from jest-mock-extended
let myServiceMock: MockProxy<MyService>;
// Init and reset service before each test
beforeEach(() => {
myServiceMock = mock<MyService>();
mockReset(MyService);
});
it('...', () => {
// Mock whatever function in the service
myServiceMock.doSomething.mockReturnValue('Mock');
host = createHost('<my-component></my-component>', {
providers: [{ provide: MyService, useValue: myServiceMock }] // Pass mocked service to the component
});
// Rest of the test...
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句