作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个问题,我将模拟服务设置为 spy 。
mockSelectionsService = jasmine.createSpyObj(['updateSelections']);
然后我两次调用该 stub 方法,每次都在不同的测试中。问题是,当我 expect()
带有 .toHaveBeenCalledWith()
的 spy 时,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;
});
最佳答案
const spy = spyOn(somethingService, "doSomething");
spy.calls.reset();
这会重置已经对 spy 进行的调用。这样您就可以在测试之间重用 spy 。另一种方法是将测试嵌套在另一个 describe()
中,并将 beforeEach()
也放入其中。
关于javascript - 如何重置 Jasmine 中的 spy ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54419027/
我是一名优秀的程序员,十分优秀!