Javascript 不应按预期工作

Javascript 不应按预期工作,javascript,should.js,assertj,Javascript,Should.js,Assertj,我是个新手。总是使用断言,但我正在尝试新的选项 这个简单的测试不起作用,我很想知道为什么 Profile.js Profile_test.js 但我得到了以下错误: 侧面图 #建造师 1) 应该返回一个Profile对象 0通过(62毫秒) 1失败 1) 侧面图 #建造师 应返回一个配置文件对象: AssertionError: expected Profile { 档案名称:“阿尔法”, 用户名:“Alfa da Silva”, 电邮:'alfa@beta.com', 语言:“java”

我是个新手。总是使用断言,但我正在尝试新的选项

这个简单的测试不起作用,我很想知道为什么

Profile.js Profile_test.js 但我得到了以下错误:

侧面图 #建造师 1) 应该返回一个Profile对象

0通过(62毫秒) 1失败

1) 侧面图 #建造师 应返回一个配置文件对象:

 AssertionError: expected Profile {
档案名称:“阿尔法”, 用户名:“Alfa da Silva”, 电邮:'alfa@beta.com', 语言:“java” }反对{ 档案名称:“阿尔法”, 用户名:“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)
Assertion.fail(node_modules/should/cjs/should.js:275:17) 在Assertion.value(node_modules/should/cjs/should.js:356:19) 在上下文中。(test/Profile_test.js:12:19) 这里怎么了?我错过什么了吗?

是的。从

应.equal(实际、预期、[消息])

Node.js标准assert.equal

从中我们知道assert.equal(…)

使用抽象相等比较(=)测试实际参数和预期参数之间的浅强制相等性

看起来您需要使用
eql(..)
deepEqual(..)
。差不多

profile.should.be.eql(valid);
您必须使用profile.should.match。因为两个物体的原型是不同的。你可以从中获得信息

 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)
profile.should.be.eql(valid);
 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);
        });

    });

});