无法使用Ember Validations插件找到“在线状态”验证器

时间:2015-05-27 06:29:11

标签: ember.js ember-data ember-cli ember-validations

我正在尝试使用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>

1 个答案:

答案 0 :(得分:1)

您需要按照ember-validations docs in testing part中的定义向测试套件添加依赖项。但请注意,这些文档有点过时了。正确的needs应仅包含您使用的验证程序(presence),如下所示:

needs: ['ember-validations@validator:local/presence']

不要指出service:validations

我很久以前发布了an issue但是还没有讨论过。