我正在尝试为云功能开发单元测试。他们中的一些人打电话给firebase-admin.messaging().sendToDevice()
来传递我不想在测试过程中实际发送的通知。
我想知道为什么Object.defineProperty
起作用,但是stub.get()
(注释掉的部分)却不起作用。我担心它可能无法使用sinon.restore()
恢复。所谓无效,是指它使用实际方法并发送通知。谢谢。
it('should return resolved promise for success', function(done) {
const num = 99;
const messagingStub = sinon.stub();
const sendStub = sinon.stub();
Object.defineProperty(admin, 'messaging', { get: () => messagingStub });
// sinon.stub(admin, 'messaging').get(function getterFn() {
// return messagingStub;
// });
messagingStub.returns({sendToDevice: sendStub});
sendStub.returns(Promise.resolve({successCount: num}));