如何正确模拟角度服务?
在进行Karma Jasmine测试时,我们可以使用Spies(间谍)来模拟和监视函数的调用情况。对于预计间谍service.getShipPhotos
会被调用一次,但实际上被调用了0次的情况,我们可以按照以下步骤进行正确的模拟:
service.getShipPhotos
函数的调用情况。// 导入所需的依赖项
import { TestBed, inject } from '@angular/core/testing';
import { YourService } from './your-service';
describe('YourService', () => {
let service: YourService;
let spy: jasmine.Spy;
beforeEach(() => {
TestBed.configureTestingModule({
providers: [YourService]
});
service = TestBed.inject(YourService);
spy = spyOn(service, 'getShipPhotos');
});
it('should correctly simulate the service call', () => {
// 执行测试代码,调用相关函数
// ...
// 断言间谍函数被调用一次
expect(spy).toHaveBeenCalledTimes(1);
});
});
在上述代码中,我们首先导入了TestBed
和inject
,它们是Angular测试框架中的工具。然后,我们创建了一个YourService
的实例,并使用spyOn
函数创建了一个间谍对象spy
,用于监视getShipPhotos
函数的调用情况。
在测试用例中,我们可以执行相关的测试代码,调用被测试的函数。最后,使用expect
断言来验证间谍函数spy
被调用了一次。
这样,我们就可以正确模拟和验证service.getShipPhotos
函数的调用情况了。
注意:以上代码示例中的YourService
是一个示例服务名称,实际应根据具体情况替换为被测试的服务名称。另外,示例中使用的是Angular的测试框架,如果你使用的是其他框架或语言,可以根据相应的测试工具和语法进行调整。
领取专属 10元无门槛券
手把手带您无忧上云