我testdouble在node.js项目中用于存根调用.这个特殊的功能是包装一个promise并then在函数本身内有多个调用.
function getUser (rethink, username) {
return new Promise((resolve, reject) => {
let r = database.connect();
r.then(conn => database.table(tablename).filter({username}))
.then(data => resolve(data))
.error(err => reject(err));
});
}
Run Code Online (Sandbox Code Playgroud)
所以我想确定是否根据错误条件正确处理resolve和reject处理.假设我需要验证一些自定义逻辑.
为了我的考试
import getUser from './user';
import td from 'testdouble';
test(t => {
const db = td.object();
const connect = td.function();
td.when(connect('options')).thenResolve();
const result = getUser(db, 'testuser');
t.verify(result);
}
Run Code Online (Sandbox Code Playgroud)
问题是connect的结果需要是一个promise,所以我使用一个值来解析,该值需要是另一个解析或拒绝的promise.
与之相关的database.connect()是不是承诺的结果.
TypeError: Cannot read property 'then' of undefined
Run Code Online (Sandbox Code Playgroud)
任何人都可以成功使用Test Double来阻止这种类型的通话吗?