chai-bookshelf

对你的 bookshelf.js 模型进行断言。

Build Status

安装

通过 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');
    })
  });
});