Ember- тестовый пример интеграции в действии

В эмбер-контроллере

action:function(){
  a:function(){
   ....
   this.set('b',true);  
  }
}

Я просто хочу написать тестовый пример для этого

test('a - function test case', function(assert) {
  var controller= this.subject();
  controller._action().a();
  assert(controller.get(b),true);
});

но это не работает, я получаю неопределенную ошибку.

любой другой способ пройти этот тестовый пример?


person abrahamspaa    schedule 08.03.2015    source источник
comment
Вы пытаетесь использовать экшены ember? Если это так, вы должны использовать actions: { ... } вместо action: function() {}   -  person Marcio Junior    schedule 09.03.2015


Ответы (2)


Глядя на ваш код, я полагаю, что вы пытаетесь использовать экшены ember, если это так, у вас есть использовать actions: { ... } вместо action: function() { ... }.

А для запуска действия вы используете метод send.

Это пример того, как протестировать действие в ember-cli:

приложение/контроллеры/индекс

import Ember from 'ember';

export default Ember.Controller.extend({
  value: null,
  actions: {
    changeValue: function() {
      this.set('value', true);
    }
  }
});

tests/unit/controllers/index-test.js

import {
  moduleFor,
  test
} from 'ember-qunit';

moduleFor('controller:index', {});

test('it exists', function(assert) {
  var controller = this.subject();
  assert.ok(!controller.get('value'));
  controller.send('changeValue');
  assert.ok(controller.get('value'));
});
person Marcio Junior    schedule 09.03.2015

Это работало для меня

test('it exists', function(assert) {
  var controller = this.subject();
  assert.ok(!controller.get('value'));
   Ember.run(function(){  
     controller.send('changeValue');
      assert.ok(controller.get('value'));
   });
});
person abrahamspaa    schedule 09.03.2015