我是新手,应该测试。总是使用Assert,但我正在尝试新选项。
这个简单的测试不起作用,我很想知道原因。
class Profile {
constructor(profile_name,user_name,email,language) {
this.profile_name = profile_name;
this.user_name = user_name;
this.email = email;
this.language = language;
}
}
module.exports = Profile;
let should = require('should');
let Profile = require('../lib/entities/Profile');
describe('Profile', function() {
describe('#constructor', function() {
it('should return a Profile object', function() {
let profile = new Profile('alfa','Alfa da Silva','alfa@beta.com','java');
let valid = { profile_name: 'alfa', user_name: 'Alfa da Silva', email: 'alfa@beta.com', language: 'java'};
profile.should.equal(valid);
});
});
});
但是我收到以下错误:
资料 #constructor 1)应该返回一个Profile对象
传递0次(62ms) 1失败1)简介 #constructor 应该返回一个Profile对象:
AssertionError: expected Profile {
个人资料名称:' alfa', user_name:' Alfa da Silva', 电子邮件:' alfa@beta.com', 语言:' java' 成为对象{ profile_name:' alfa', user_name:' Alfa da Silva', 电子邮件:' alfa@beta.com', 语言:' java' } +预期 - 实际
at Assertion.fail (node_modules/should/cjs/should.js:275:17) at Assertion.value (node_modules/should/cjs/should.js:356:19) at Context.<anonymous> (test/Profile_test.js:12:19)
这里有什么问题?我错过了什么吗?
答案 0 :(得分:1)
您必须使用 profile.should.match 。因为两个对象的原型是不同的。您可以从here获取信息。
let should = require('should');
let Profile = require('../lib/entities/Profile');
describe('Profile', function() {
describe('#constructor', function() {
it('should return a Profile object', function() {
let profile = new Profile('alfa','Alfa da Silva','alfa@beta.com','java');
let valid = { profile_name: 'alfa', user_name: 'Alfa da Silva', email: 'alfa@beta.com', language: 'java'};
profile.should.match(valid);
});
});
});
答案 1 :(得分:0)
should.equal(actual,expected,[message])
Node.js标准assert.equal。
从Nodejs documentation我们知道assert.equal(...)
使用抽象平等比较(==)测试实际参数和预期参数之间的浅层强制相等。
您似乎需要使用eql(..)
或deepEqual(..)
。像
profile.should.be.eql(valid);