如何清除withArgs SpyStrategy?我在文档中找不到任何内容。
我通常会创建一个如下所示的间谍对象:
let inventoryServiceSpy = jasmine.createSpyObj('InventoryService', [
'getInventories'
]);
在我的测试中,我将为通用调用提供参数,如下所示:
inventoryServiceSpy.getInventories.and.returnValue([someInventoryObject]);
为了确保此返回值不会在 beforeEach 中的测试之间共享,我将包含以下内容:
inventoryServiceSpy.getInventories.and.returnValue([]);
这个效果很好。然而,在一项测试中,我根据参数返回不同的值:
inventoryServiceSpy.getInventories
.withArgs('org1')
.and.returnValue([org1Inv]);
inventoryServiceSpy.getInventories
.withArgs('org2')
.and.returnValue([org2Inv]);
但是,如果此测试在另一个恰好使用“org1”作为输入的测试之前运行,它将返回存储的 org1Inv 而不是 someInventoryObject。我认为它这样做是因为 withArgs 没有在 beforeEach 中清除,并且 withArgs 优先于通用 returnValue。
有没有办法清除beforeEach中所有withArgs值?或者在使用它的任何测试结束时清除它?
你可以尝试做
inventoryServiceSpy.getInventories.calls.reset()
这将重置所有间谍呼叫。
另一个解决方案是
在每个测试用例之后使用
在根级别重新初始化角度分量,以便它将在每个测试之后运行。这将清除所有间谍和侦听器,并为您提供干净的测试状态。beforeEach