使用自定义函数扩展 should.js

Extending should.js with a custom function

我有一个简单的 mixin:

var _ = require('lodash')
_.mixin(require('lodash-uuid'))

我可以像这样在代码中使用:

if (_.isUuid(someValue)) {
   // it's a uuid!
}

我希望能够扩展基于 的测试以利用此模块,例如:

response.should.have.property('uuid').which.is.a.uuid()

扩展 Should 的 docs 有点轻;我试过了:

var uuid = should.extend('uuid', _.isUuid)

但是抛出:

TypeError: response.should.have.property(...).which.is.a.uuid is not a function

你使用的方法不对。您使用的方法是将 should getter 添加到任何对象。您需要使用 should.Assertion.add,例如:

var should = require('should');

should.Assertion.add('uuid', function() {
  this.params = { operator: 'to be UUID' };

  this.assert(_.isUuid(this.obj));
});