node.js - 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 } });
}
解决方案
这是解决方案...
const collectionStub = sinon.stub(firebase.cfDB, 'collection')
.get(() => {
return function() {
return {
doc: (path) => {
return {
set: () => [{user: 'mock-user-1'}, {user: 'mock-user-2'}]
}
}
}
}
});
推荐阅读
- authentication - IIS Web 应用程序允许匿名访问,尽管这已禁用
- javascript - 将 DOM 元素的第一个子元素移动到最后一个位置而不创建垃圾节点
- php - 从数据库创建 json 文件
- octave - 如何将数组的内容发送到单个函数?
- java - 如何实例化对象并将其传递给循环中的其他构造函数
- html - 背景:返回 ERR_FILE_NOT_FOUND 的 url
- python - 在设置标题之前保存单元格变量
- javascript - 如何在 Heroku for Firefox 上设置 Selenium?
- r - 在 rmd 上添加字数
- clojure - 是否有一种规范的方法来命名变量,否则会导致名称冲突?