Microsoft Teams Angular 应用程序,Sinon Stub `microsoftTeams.authentication.notifySuccess`

Microsoft Teams Angular application, Sinon Stub `microsoftTeams.authentication.notifySuccess`

我目前正在开发 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

您需要用 sinon 间谍替换 microsoftTeams.authentication.notifySuccess。这只适用于 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})