问题描述
我目前正在开发 Microsoft Teams Angular 应用程序,并测试 Microsoft Teams 库。
我正在尝试使用 Sinonjs 测试下面的调用,但没有成功。有没有一种有效的方法来测试使用 microsoft.authentication.notifySuccess
的参数调用了 token
?
microsoftTeams.initialize(() =>
microsoftTeams.authentication.notifySuccess({token} as any)
);
我正在寻找类似的东西
sinon.assert.calledWith(microsoftTeams.authentication.notifySuccess as sinon.SinonStub,{token});
提前致谢:D
解决方法
您需要将 microsoftTeams.authentication.notifySuccess
替换为 sinon 间谍。这仅适用于 sinon.spy()
。之后你可以用 sinon.assert
检查这个间谍是否是用某个参数调用的。
// Replace function with a spy
let spy = sinon.spy(microsoftTeams.authentication,'notifySuccess');
// Call method under test
microsoftTeams.initialize(() =>
microsoftTeams.authentication.notifySuccess({token} as any)
);
// Check spy call
sinon.assert.calledWith(spy,{token});
希望这会有所帮助。最好的问候
,// This is the bit I was missing,we need to tell sinon to take in a
// function/callback and immediately call it.
sandbox.stub(microsoftTeams,'initialize').callsFake((callback) => callback());
sandbox.stub(microsoftTeams.authentication,'notifySuccess');
// Run code and assert
sinon.assert.calledWith(microsoftTeams.authentication.notifySuccess as sinon.SinonStub,{token})