表达:我不明白怎么用sinon
Express: I don't understand how to use sinon
我有一个控制器,方法是:
registration(req, res) {
if (!req.user) return res.status(401).send('Registration failed');
const { user } = req;
return res.status(201).json({ user });
},
我想测试用我的假数据发送 json 的注册方法。
const { expect } = require('chai');
const sinon = require('sinon');
const authController = require(...);
describe('authController', () => {
const USER = {
email: 'test@test.com',
password: 'Test12345',
confirm: 'Test12345',
username: 'Test',
};
it('it should send user data with email: test@test.com', () => {
const req = { user: USER };
const res = {
status: sinon.stub().returnsThis(),
json: sinon.spy(),
};
console.log('RES: ', res); // I can't see the json data
authController.registration(req, res);
expect(res.json).to.equal(USER);
});
我检查了我的 USER 的数据是否进入了控制器 (req.user)。
我试图通过间谍查看包含 res 的内容,但没有找到我的 USER 数据
我不明白在我的情况下如何使用 sinon?
您几乎通过了测试。对于这种测试,我们可以使用 Sinon 的 calledWith
来检查函数和参数是否被正确调用。
describe('authController', () => {
const USER = {
email: 'test@test.com',
password: 'Test12345',
confirm: 'Test12345',
username: 'Test',
};
it('it should send user data with email: test@test.com', () => {
const req = { user: USER };
const res = {
status: sinon.stub().returnsThis(),
json: sinon.spy(),
};
authController.registration(req, res);
// this is how we check that the res is being called with correct arguments
expect(res.status.calledWith(201)).to.be.ok;
expect(res.json.calledWith({ user: USER })).to.be.ok;
});
});
希望对您有所帮助。
我有一个控制器,方法是:
registration(req, res) {
if (!req.user) return res.status(401).send('Registration failed');
const { user } = req;
return res.status(201).json({ user });
},
我想测试用我的假数据发送 json 的注册方法。
const { expect } = require('chai');
const sinon = require('sinon');
const authController = require(...);
describe('authController', () => {
const USER = {
email: 'test@test.com',
password: 'Test12345',
confirm: 'Test12345',
username: 'Test',
};
it('it should send user data with email: test@test.com', () => {
const req = { user: USER };
const res = {
status: sinon.stub().returnsThis(),
json: sinon.spy(),
};
console.log('RES: ', res); // I can't see the json data
authController.registration(req, res);
expect(res.json).to.equal(USER);
});
我检查了我的 USER 的数据是否进入了控制器 (req.user)。 我试图通过间谍查看包含 res 的内容,但没有找到我的 USER 数据 我不明白在我的情况下如何使用 sinon?
您几乎通过了测试。对于这种测试,我们可以使用 Sinon 的 calledWith
来检查函数和参数是否被正确调用。
describe('authController', () => {
const USER = {
email: 'test@test.com',
password: 'Test12345',
confirm: 'Test12345',
username: 'Test',
};
it('it should send user data with email: test@test.com', () => {
const req = { user: USER };
const res = {
status: sinon.stub().returnsThis(),
json: sinon.spy(),
};
authController.registration(req, res);
// this is how we check that the res is being called with correct arguments
expect(res.status.calledWith(201)).to.be.ok;
expect(res.json.calledWith({ user: USER })).to.be.ok;
});
});
希望对您有所帮助。