const Datastore = require('@google-cloud/datastore');
const datastore = Datastore();
function listTasks(res) {
const query = datastore.createQuery('Test');
datastore.runQuery(query)
.then((results) => {
const tasks = results[0];
tasks.forEach((task) => {
const taskKey = task[datastore.KEY];
console.log(taskKey.id, task);
});
res.send(tasks);
})
.catch((err) => {
console.error('ERROR:', err);
});
}
我想对上面的代码进行单元测试,但我不知道如何模拟/ stub 谷歌云数据存储对象/方法。例如,我想模拟/ stub datastore.createQuery('Test'),但不知道怎么做。
最佳答案
您无能为力。要么自己模拟整个数据存储,使用本地模拟器,要么只模拟每个测试用例所需的方法。
第一种方法可能费力且复杂,但可以保证最佳的响应时间和测试速度。
第二种方法也可以,但在我的实践中,这种方法并不比项目中的真实数据存储快。我的意思是,我机器中的本地仿真器响应时间大约为 30 毫秒 - 400 毫秒,这几乎与使用远程数据存储实例相同。不知道为什么,也许我做错了什么。你至少可以试试。
第三种方法,介于前两种方法之间,但您将开始测试实现而不是行为,这样的测试变得毫无用处。但是,这只是我对这种方法的看法。
还有一种方法,第四种就是分解这种方法,所以他们没有数据库通信代码,只有算法部分。测试这样的代码,而不是调用数据库方法的代码。
关于node.js - Node js中的单元测试/模拟谷歌数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47089099/