是否可以使用 sinon for require('promise-mysql')
npm 包在 NodeJS 中模拟承诺查询。由于 Sinon 允许我们模拟和/或存根对象上的方法。假设我想重写 createConnection() 方法,以便无论数据库设置是否正确,它都会返回一个有效对象,我会删除该方法。我可以使用require('mysql')
具有回调的 npm 包来模拟它。
但是,由于require('promise-mysql')
包返回承诺,我不确定如何模拟相同的测试数据。
对于require('mysql')
包,这是完美的
var successConnectionObject = {
connect: function(cb) {
cb();
},
query: function(sqlQury, cb) {
if (sqlQury === 'SELECT * FROM USERS') {
cb(null, constants.USERQueryResp);
} else {
cb(null, '');
}
},
end: function() {}
}
var testMysqlDriver = require('mysql');
var stub = sinon.stub(testMysqlDriver, 'createConnection');
stub.returns(successConnectionObject);
publish.handler(some_JSON_Request, some_Context_Values, function(err, data) {
expect(data.message).toBe(USER_Query_Response);
done();
});
我们怎样才能做到这一点require('promise-mysql');