未找到Chai功能

时间:2016-04-22 21:14:13

标签: javascript mocha chai

我刚刚开始使用TDD,而且我遇到了一个奇怪的问题。我为一个(也很简单的)user模块编写了一个非常简单的测试。出于某种原因,测试抱怨hasOwnProperty函数不存在。

测试代码:

var expect = require('chai').expect;
var user = require('./user');

describe('Name', function() {
  it('Should have a name', function() {
    expect(user).to.have.ownProperty('name');
  });
  it('The name property should be a string', function () {
    expect(user.name).to.be.a('string');
  });
  it('Should have non empty string as name', function () {
    expect(user.name).to.have.length.above(0);
  });
});

模块:

var user = Object.create(null);

user.name = 'Name';

// exports
module.exports = user;

运行$ mocha test.js后,第一次测试失败。 Chai ownProperty reference

有什么建议吗?谢谢!

控制台输出:

Name
  1) Should have a name
  ✓ The name property should be a string
  ✓ Should have non empty string as name


2 passing (12ms)
1 failing

1) Name Should have a name:
   TypeError: obj.hasOwnProperty is not a function
    at Assertion.assertOwnProperty (node_modules/chai/lib/chai/core/assertions.js:937:13)
    at Assertion.ctx.(anonymous function) [as ownProperty] (node_modules/chai/lib/chai/utils/addMethod.js:41:25)
    at Context.<anonymous> (test.js:6:26)

1 个答案:

答案 0 :(得分:1)

Object.create(null)表示用于创建对象用户的原型为null,因此它不会继承“Object”类型的属性。

试试这个。

var user = Object.create({});

user.name = 'Name';

 // exports
module.exports = user;

您需要使用Object.create({})才能访问hasOwnProperty方法。