gpt4 book ai didi

javascript - 如何重置 Jasmine 中的 spy ?

转载 作者:太空狗 更新时间:2023-10-29 18:22:09 25 4
gpt4 key购买 nike

我有一个问题,我将模拟服务设置为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com