我的问题是尝试对 Waterline 模型进行 TDD。我提供的测试只是构建我的套件的样板。然而,它们提出了有效的问题。主要问题是我需要 Vows.js 测试中的模型。在测试范围内定义了模型,但它没有从 Waterline 包继承的任何属性。例如,这里是“EducationLevel”的一些模型代码:
module.exports = {
migrate: 'safe',
tableName: 'education_levels',
attributes: {
id : { type: 'integer', required: true },
description: { type: 'string', required: true },
display_sort: { type: 'integer', required: true}
}
};
这里有一些试验测试:
vows = require('vows')
assert = require('assert')
EducationLevel = require('../api/models/EducationLevel')
vows.describe('tac_models').addBatch({
'EducationLevel model' : {
topic: function(){
educationLevel = EducationLevel.create();
return true;
},
'It exists': function (topic) {
assert.equal(EducationLevel.create,undefined);
assert.equal(EducationLevel.migrate,undefined);
}
}
}).export(module)
当我运行测试时,第一个断言通过了,但第二个没有:
vows spec/*
✗
EducationLevel model
✗ It exists
» expected undefined,
got 'safe' (==) // tac_models.js:13
✗ Broken » 1 broken (1.545s)
这表明测试只知道 EducationLevel 定义中明确声明的内容。定义了“迁移”属性是因为我在代码中明确定义了它。它不知道 Waterline 方法“创建”。我怎样才能以使传统 TDD 实用的方式来解决这个问题?