在node.js

时间:2015-11-17 16:25:25

标签: tdd mocha sinon stub

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

我有一个模块,它调用另一个从DB返回值的模块

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的存根来返回一个值,如果(用户)条件,控件就不会出现在我的其他地方。

我的单元测试用例如下

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();

};

};

1 个答案:

答案 0 :(得分:0)

所以我浏览了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();
};
};
相关问题