gpt4 book ai didi

javascript - stub 未被调用

转载 作者:行者123 更新时间:2023-12-02 23:08:30 38 4
gpt4 key购买 nike

我对我的一个 Controller 进行了单元测试,它有一个函数查找数据(sequelize)并将结果作为 json 添加到响应对象。

我有两个 stub ,其中一个被调用,另一个则没有。

Controller

exports.findAll =  (req, res) => {
Idea.findAll().then(ideas => {
console.log(ideas);
return res.json(ideas);
}).catch(err => {
console.log(err);
});
};

Controller 测试

const chai = require('chai');
const {match, stub, resetHistory, spy} = require('sinon');
const proxyquire = require('proxyquire');
var sinonChai = require("sinon-chai");
chai.should();
chai.use(sinonChai);

const {makeMockModels} = require('sequelize-test-helpers');

describe('Idea Controller', function () {

const data = {
id: 1,
title: 'Stubbed Title',
text: 'Stubbed text'
};

describe('findAll()', function () {
it('Success case ', function () {

const mockResponse = () => {
const res = {};
res.json = stub().returns(res);
return res;
};

let res = mockResponse();

const Idea = {findAll: stub()};
const mockModels = makeMockModels({Idea});

Idea.findAll.resolves(data);

const ideaController = proxyquire('../../src/controllers/IdeaController', {
'../models': mockModels
});

ideaController.findAll({}, res);

Idea.findAll.should.have.been.called; // passes
res.json.should.have.been.called; //fails
});
})
});

最佳答案

由于 findAll 是异步函数,因此您应该将断言移至 .then 内。

关于javascript - stub 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57482580/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com