Ember- 动作集成测试用例

Ember- integration test case on action

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

但这不起作用我收到未定义的错误。

还有其他方法可以通过这个测试用例吗?

查看您的代码,我相信您正在尝试使用 ember actions,如果是这样,您必须使用 actions: { ... } 而不是 action: function() { ... }

要触发操作,您可以使用 send method

这是一个关于如何在 ember-cli:

中测试动作的例子

app/controllers/index

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

这对我有用

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