chai-bookshelf
对你的 bookshelf.js 模型进行断言。
安装
通过 npm 安装:npm install chai-bookshelf
注意使用快捷方式 –save-dev 很方便:npm install --save-dev chai-bookshelf
使用
var chai = require('chai');
chai.use(require('chai-bookshelf'));
断言
目前只支持关系的基本断言。
关系
通过进行直接的断言来移除代码中的样板代码。
支持的关系包括
- hasOne expect(ClassA).to.haveOne(ClassB)
- hasMany expect(ClassA).to.haveMany(ClassB)
- belongsTo expect(ClassA).to.belongTo(ClassB)
- belongsToMany expect(ClassA).to.belongToMany(ClassB)
基本示例
一个展示关系测试的基本示例
describe('User model', function() {
  var User
    , Thing
  ;
  beforeEach(function() {
    Thing = db.Model.extend({
      tableName: 'things'
    });
    User = db.Model.extend({
      things: function() {
        return this.hasMany(Thing);
      }
    });
  });
  describe('Relationships', function() {
    it('has many things', function() {
      expect(User).to.haveMany(Thing);
    })
  });
});
指定属性名称示例
默认情况下,断言将使用表名的单数形式。如果属性的名称不是目标模型类的名称(例如,是复数),你需要指定表示关系的属性名称。
describe('User model', function() {
  var User
    , Thing
  ;
  beforeEach(function() {
    User = db.Model.extend({});
    Thing = db.Model.extend({
      owner: function() {
        this.belongsTo(User);
      }
    });
  });
  describe('Relationships', function() {
    it('has many things', function() {
      expect(Thing).to.belongTo(User, 'owner');
    })
  });
});
