所以我有一个文件,user-database
,这看起来是这样的:兴农磕碰helper方法
export function foo(id: number): Promise<boolean> {
return new Promise<boolean>((resolve, reject) => {
findSomething(id)
.then((data) => {
//do something with data
})
}
}
export function findSomething(id: number): Promise<Object> {
return new Promise<Object> ((resolve, reject) => {
let query = 'SELECT * FROM user';
db.executeQuery(query);
.then(data) => {
if(data.length < 1) { reject(new Error('whoops')); }
resolve(data);
}, (err) => {
reject(err);
})
})
}
所以我写的用兴农的外部功能,foo
单元测试,因此我想要存根它所调用的功能,findSomething
。我这样做如下:
import * as user_db from '../../src/user-database';
describe('POST /someEndpoint',() => {
describe('when successful',() => {
let stub;
beforeEach(function() {
stub = sinon.stub(user_db, 'findSomething');
});
afterEach(function() {
stub.restore();
});
it('should respond with 200', function(done) {
stub.returns(anObjectIPredefine);
request(server)
.post(basePath)
.send(aPayloadIPredefine)
.expect(200, done);
});
}
}
当我运行测试,我不看对象,我说的是存根与此stub.returns(anObjectIPredefine)
返回。我实际上具有正常执行的功能findSomething
,并从dB获取数据。有什么明显的我做错了吗?我唯一的猜测是,stub = sinon.stub(user_db, 'findSomething')
不是正确的语法,用于存储与被测函数在相同范围内定义的函数。我无法找到一个替代语法。
我在你的建议后试过。把我所有的'stub.return()'改成''stub.resolves()'。包括sinon库后,当然还包括图书馆。同样的事情正在发生,实际上并不像是扼杀,而是实际上调用真正的方法。 – TovrikTheThird