我正在尝试使用Ember Validations插件,但我无法使用它。在Chrome控制台中,我看到:警告:找不到“状态”验证器。
这是我的模特:
import Ember from 'ember';
import DS from 'ember-data';
import EmberValidations from 'ember-validations';
export default DS.Model.extend(EmberValidations.Mixin, {
name: DS.attr('string'),
validations: {
name: {
presence: true
}
}
});
这是我的测试:
import Ember from 'ember';
import EmberValidations from 'ember-validations';
import { moduleForModel, test } from 'ember-qunit';
moduleForModel('person', 'Unit | Model | person', {
// Specify the other units that are required for this test.
needs: ['ember-validations@validator:local/presence'],
afterEach: function() {
window.sessionStorage.clear();
}
});
test('isValid should be false if name is not set', function(assert) {
stop();
var model = this.subject();
console.log(model);
Ember.run(function() {
sinon.spy(model, 'save');
model.validate().then(function() {
start();
assert.equal(model.get('isValid'), false);
});
});
});
该测试的结果是:
死于Object.test的测试#1(http://localhost:4200/assets/test-support.js:1644:11) 在http://localhost:4200/assets/myproj.js:14450:15 在mod.state(http://localhost:4200/assets/vendor.js:150:29) 在tryFinally(http://localhost:4200/assets/vendor.js:30:14) 在requireModule(http://localhost:4200/assets/vendor.js:148:5) at Object.TestLoader.require(http://localhost:4200/assets/test-loader.js:29:9) at Object.TestLoader.loadModules(http://localhost:4200/assets/test-loader.js:21:18):<(unknown mixin):ember848>
答案 0 :(得分:1)
您需要按照ember-validations docs in testing part中的定义向测试套件添加依赖项。但请注意,这些文档有点过时了。正确的needs
应仅包含您使用的验证程序(presence
),如下所示:
needs: ['ember-validations@validator:local/presence']
不要指出service:validations
。
我很久以前发布了an issue但是还没有讨论过。