我有一个问题,我已经将模拟服务设置为间谍。
mockSelectionsService = jasmine.createSpyObj(['updateSelections']);
Run Code Online (Sandbox Code Playgroud)
然后,我两次在不同的测试中两次调用该存根方法。问题是,当我expect()使用.toHaveBeenCalledWith()toHaveBeenCalledWith方法的间谍还包含参数时,它是从第一个测试传递过来的,这在第二个测试中产生了误报。
我如何擦除/清除/重置spyObject以便进行下一次测试,以使其不再相信它被调用?
服务/组件的初始化
beforeEach(() => {
mockSelectionsService = jasmine.createSpyObj(['updateSelections']);
TestBed.configureTestingModule({
declarations: [QuickSearchComponent, LoaderComponent, SearchComponent, SearchPipe, OrderByPipe],
providers: [OrderByPipe, SearchPipe, SlicePipe, {provide: SelectionsService, useValue: mockSelectionsService}],
imports: [FormsModule, HttpClientModule]
});
fixture = TestBed.createComponent(QuickSearchComponent);
component = fixture.componentInstance;
fixture.detectChanges();
fixture.componentInstance.templates = mockTemplates;
fixture.componentInstance.manufacturers = mockManufacturers;
Run Code Online (Sandbox Code Playgroud)
});
Yuv*_*til 11
类型 1:
var myService = jasmine.createSpyObj('MyService', ['updateSelections']);
myService.updateSelections.calls.reset();
Run Code Online (Sandbox Code Playgroud)
类型 2:
var myService = spyOn(MyService, 'updateSelections');
myService.updateSelections.calls.reset();
Run Code Online (Sandbox Code Playgroud)
注意:以上代码在 Jasmine 3.5 上测试
const spy = spyOn(somethingService, "doSomething");
spy.calls.reset();
这将重置已经向间谍发出的呼叫。这样,您可以在测试之间重用间谍程序。另一种方法是将测试嵌套在另一个中describe(),也将其beforeEach()放入其中。
| 归档时间: |
|
| 查看次数: |
2968 次 |
| 最近记录: |