使用Sinon在Firebase-admin中进行麻烦的获取方法

时间:2018-10-05 21:47:49

标签: javascript firebase sinon firebase-admin

我正在尝试为云功能开发单元测试。他们中的一些人打电话给firebase-admin.messaging().sendToDevice()来传递我不想在测试过程中实际发送的通知。

My reference in Firebase docs

Sinon Stubs Reference

Sinon Stub Get

我想知道为什么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}));

0 个答案:

没有答案