Javascript Sinon故障时的短截线
我试图存根一个backDB“put”函数,但是在一个被调用的函数中,但是失败了 我的数据库功能-Javascript Sinon故障时的短截线,javascript,sinon,pouchdb,sinon-chai,Javascript,Sinon,Pouchdb,Sinon Chai,我试图存根一个backDB“put”函数,但是在一个被调用的函数中,但是失败了 我的数据库功能- var PouchDB = require('pouchDB') var PendingDB = new PouchDB("") module.exports.addPendingRequest = function(doc, callback){ PendingDB.put(doc, function(err, result){ if(err) { conso
var PouchDB = require('pouchDB')
var PendingDB = new PouchDB("")
module.exports.addPendingRequest = function(doc, callback){
PendingDB.put(doc, function(err, result){
if(err) {
console.log("Error in PendingDB: addPendingRequest");
console.log(err);
callback(err, null);
}
callback(null, result);
});
console.log("after put: inside addPendingRequest");
}
我的测试功能:
var expect = require("chai").expect;
var PendingDB = require("../../lib/administration/PendingDB");
var PouchDB = require('pouchDB');
var sinon = require('sinon');
describe('Testing adding a request', function(){
it('should save the request with email', function(done){
var req = {
_id : "test@email.com",
first_name: "firstTest",
last_name: "test",
id: "test@email.com",
justif: "Testing Purposes",
}
var res = {};
var next = null;
console.log("after req, res, next");
var testOutput = {
success : "success"
};
console.log("after testOutput is set");
var PendingDBTest = sinon.stub(PouchDB.prototype, 'put', function(err, result){
console.log("in stub addReq");
});
console.log("after sinon.stub");
expect(function(){
PendingDB.addPendingRequest(req, function(err, response){
console.log("response");
console.log(response);
});
}).to.not.throw(Error);
expect(PendingDBTest.called).to.equal(true);
PendingDBTest.restore();
done();
})
})
控制台:
在req、res、next之后
设置testOutput之后
在西农之后
放置后:内部addPendingRequest
因此,永远不会输入PendingDB.put,调用的测试PendingDBTest.called返回false,因此失败 存根在实际对象上,而不是在其原型上
var PendingDBTest = sinon.stub(PouchDB, 'put', function(err, result){
...
不用存根,您可以使用PockDB可用的内存适配器编写测试: 在NodeJS中:
var PouchDB = require('pouchdb');
var testDB = new PouchDB('testDb', {
db: require('memdown')
});
或在浏览器中:
<script src="pouchdb.js"></script>
<script src="pouchdb.memory.js"></script>
<script>
// this pouch is ephemeral; it only exists in memory
var testDB = new PouchDB('testDB', {
adapter: 'memory'
});
</script>
//这个袋子是短暂的;它只存在于内存中
var testDB=新数据库('testDB'{
适配器:“内存”
});
例如,一个以这种方式进行测试的项目签出:,但是我必须正确地创建一个新的实例。功能(错误、结果)的重要性是什么。它是否必须与put标题相同?