【问题标题】:I have an erro in a mocha test, testing nodejs我在 mocha 测试中出错,测试节点 js
【发布时间】:2022-07-23 00:50:07
【问题描述】:

我有这个方法

getUser: function(req,res)
{
    var params = req.body;
    User.findById(req.params.id, function (err, result) {
        if (err) {
            return handleError(err);
        }

        return res.json(result);
    });

},

还有这个测试

describe('users', ()=>{
    let findStub;
    let deleteStub;
    let sampleUser;
    let mailerStub;

    beforeEach(()=>{
        sampleUser = {
            id: 123,
            name: 'foo',
            email: 'foo@bar.com',
            save: sandbox.stub().resolves()
        }

        findStub = sandbox.stub(mongoose.Model, 'findById').resolves(sampleUser);
        deleteStub = sandbox.stub(mongoose.Model, 'remove').resolves('fake_remove_result');
        
    })

    afterEach(()=>{
        sandbox.restore();
        users = rewire('./user');
    })

用户 得到 应该检查一个ID: TypeError:无法读取 null 的属性(读取“正文”) 在 Object.getUser (controllers/user.js:113:22)

错误在这一行 var params= req.body;在方法中。我不知道如何解决它。

    context('get', ()=>{
        it('should check for an id', (done)=>{
            users.getUser(null, (err, result)=>{
                expect(err).to.exist;
                expect(err.message).to.equal('Invalid user id');
                done();
            })
        })

【问题讨论】:

    标签: node.js mocha.js sinon


    【解决方案1】:

    那是因为您在此行中将null 提供为req

    users.getUser(null, (err, result)=>{
    

    你需要在那里提供一些模拟值,像这样

                users.getUser({body: {id: '123' // provide your mock values here}}, (err, result)=>{
                    expect(err).to.exist;
                    expect(err.message).to.equal('Invalid user id');
                    done();
                })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-17
      • 2019-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      相关资源
      最近更新 更多