0
私はsinon.jsでmocksを使ってテストに合格したいと思います。 app.js:sinon.jsでmockを使ってテストに合格するには?
const express = require('express');
const route = require('./server/routes/index');
const app = express();
app.use('/', route);
index.js:
const router = require('express').Router();
const ctrlUsers = require('../controllers/users');
router.get('/users', ctrlUsers.UsersRead);
users.js:
const User = require('../models/user');
module.exports.UsersRead = function UsersRead(req, res) {
User
.query()
.then((user) => {
res.render('results');
})
.catch((err) => {
res.render('error');
});
};
user.test.js:私は実行
const app = require('../app');
const sinon = require('sinon');
describe('Get /users',() => {
const appMock = sinon.mock(app);
test('status of get',() => {
appMock.expects('get').once().withArgs('/users').returns(0);
appMock.restore();
appMock.verify();
});
});
テストファイルが失敗し、このエラーが発生しました:
ExpectationError: Expected get(/providers[, ...]) once (never called)
at Object.fail (node_modules/sinon/lib/sinon/mock-expectation.js:281:25)
at Object.verify (node_modules/sinon/lib/sinon/mock.js:108:29)
at Object.test (__tests__/usersRoutes.test.js:11:13)
at Promise (<anonymous>)
at <anonymous>
どうすれば修正できますか?
を見てみましょうあなたはapp' 'のためのモックを作成しましたが、あなたはどこでもアプリを呼び出すことはありません。たとえば、supertestを使用してリクエストを送信する必要があります。 – alexmac
@alexmac 'request(app).get(/ users).expect(200)'をプログラムに追加する必要がありますか? – user3618284