在 node.js 中使用 sinon 的摩卡存根

mocha stub using sinon in node.js

我想知道我是否遗漏了关于 sinon.js 的任何内容我尝试使用 sinon.stub().returns 和产量但无法得到结果.任何指针都会有所帮助

我有一个模块调用另一个模块return来自数据库的值

var users = require('/users');
module.exports.getProfileImage = function (req, res) {
var profile = {};
    else {
        users.findOne("email", req.session.user.email, function (err, user) {
            if (err) {
                res.status(400).send();
            }
            else if (!user) {

                //return default image
            }
            else if (user) {
                //Do some other logic here
            }
       });

};

我正在使用 mocha 作为测试框架,同时也在使用 sinon。我面临的问题是当我创建一个 users.findOne 到 return 的存根时,如果(用户)条件,控件不会出现在我的 else 中。

我的单元测试用例如下

describe("Return image of user",function(){

var validRequest = null;
validRequest={
        session:{
            user:{
                email:'testUser@test.com',
                role:'Hiring Company'
            }
        }
    };
 it("Should return an image from the file if the user is present in db",function(done){
var findOneUserResponse ={
        companyName:"xyz",
        email:"xyz@abc.com"
    };
    var findOne = sinon.stub(mongoose.Model, "findOne");
    findOne.callsArgWith(1,null,findOneUserResponse);

    user.getProfileImage(validRequest,response);

    var actualImage = response._getData();
    findOne.restore();
    done();

};

};

所以我浏览了 sinon.js 文档 http://sinonjs.org/docs/ 并发现了我遗漏的内容

describe("Return image of user",function(){

var validRequest = null;
validRequest={
    session:{
        user:{
            email:'testUser@test.com',
            role:'Hiring Company'
        }
    }
};
it("Should return an image from the file if the user is present in db",function(done){
var findOneUserResponse ={
    companyName:"xyz",
    email:"xyz@abc.com"
};
var findOne = sinon.stub(mongoose.Model, "findOne",function(err,callback){
   callback(null,findOneUserResponse);
)};

user.getProfileImage(validRequest,response);

var actualImage = response._getData();
findOne.restore();
done();
};
};