0
我想聲明在我的notifier.send
函數中調用了trackPushNotification
。 trackPushNotification和send函數都存在於同一個文件中。
我認爲我應該使用Sinon存根trackPushNotification
能夠跟蹤callCount
財產。當我執行我的測試時,trackPushNotification
似乎並沒有被截斷。我搜索了一些東西,顯然它與我使用ES6導入/導出的方式有關。我找不到答案,所以我希望有人能幫助我解決這個問題。不能在Sinon導入的文件中存根函數調用
的notifier.send
功能如下:
export const send = (users, notification) => {
// some other logic
users.forEach(user => trackPushNotification(notification, user));
};
我notifier.trackPushNotification
功能如下:
export const trackPushNotification = (notification, user) => {
return Analytics.track({ name: 'Push Notification Sent', data: notification.data }, user);
};
我的測試用例是這樣的:
it('should track the push notifications',() => {
sinon.stub(notifier, 'trackPushNotification');
const notificationStub = {
text: 'Foo notification text',
data: { id: '1', type: 'foo', track_id: 'foo_track_id' },
};
const users = [{
username: '[email protected]',
}, {
username: '[email protected]',
}];
notifier.send(users, notificationStub);
assert.equal(notifier.trackPushNotification.callCount, 2);
});
還做了一個快速測試:
// implementation.js
export const baz = (num) => {
console.log(`blabla-${num}`);
};
export const foo = (array) => {
return array.forEach(baz);
};
// test.js
it('test',() => {
sinon.stub(notifier, 'baz').returns(() => console.log('hoi'));
notifier.foo([1, 2, 3]); // outputs the blabla console logs
assert.equal(notifier.baz.callCount, 3);
});