首页 > 解决方案 > sinon 存根带有用于单元测试的链式方法的 firebase 集合...(sinon,node/express,Jasmine)

问题描述

在我的 nodejs 代码中,我有一个片段:

   await cfDB.collection('users').doc(userAccount.uid).set({
      email: 'email@domain.com',
      firstName: 'firstname',
      lastName: 'Lastname,
    });

我将如何为茉莉花单元测试创​​建一个 sinon 模拟?

更完整的上下文......

 const { Firestore } = require('@google-cloud/firestore');

  const cfDB = new Firestore();

  // Create Firestore user document
  try {
    await cfDB.collection('users').doc('E7skP0IncSW7wkBxnrYFx6udzGH2').set({
      email: 'email@domain.com',
      firstName: 'Firstname',
      lastName: 'Lastname',
    });


  } catch (error) {
    res.json({ success: false, payload: { message: 'Firebase User write error. ' + error } });
    return;
  }

  // Success
  res.json({ success: true, payload: { message: 'User created.', userAccount: userAccount } });
}

标签: node.jsfirebaseexpressunit-testingsinon

解决方案


这是解决方案...

        const collectionStub = sinon.stub(firebase.cfDB, 'collection')
        .get(() => {
            return function() {
                return {
                    doc: (path) => {
                        return {
                            set: () => [{user: 'mock-user-1'}, {user: 'mock-user-2'}]
                        }
                    }
                }
            }
        });

推荐阅读