【发布时间】:2019-06-22 11:04:06
【问题描述】:
我有一个问题,我将模拟服务设置为间谍。
mockSelectionsService = jasmine.createSpyObj(['updateSelections']);
然后我调用该存根方法两次,每次都在不同的测试中。问题是当我 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;
});
【问题讨论】:
-
在 beforeEach 中添加你的间谍对象初始化
-
我尝试在描述的 beforeEach() 中使用
mockSelectionsService = jasmine.createSpyObj(['updateSelections']);重新初始化对象,但这似乎不起作用。我注意到似乎有很多不同的方法可以创建间谍,但 jasmine 文档/api 并没有完全给出答案。我已经更新了我的答案以在我的第一个 beforeEach() 中显示初始化
标签: javascript angular jasmine