2015-03-08 3 views
0

В контроллереEmber- интеграционный тест на случай действия

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

Ember Я просто хочу, чтобы написать тест для этого

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

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

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

+0

Вы пытаетесь использовать [ember actions] (http://emberjs.com/guides/templates/actions/)? Если это так, вы должны использовать 'actions: {...}' вместо 'action: function() {}' –

ответ

0

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

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

Это пример того, как испытать действие в Ember-кли:

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

import Ember from 'ember'; 

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

тесты/блок/контроллеры/индекс-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')); 
}); 
0

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

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