如何使用Ember qUnit测试类函数?

时间:2017-03-03 18:58:46

标签: ember.js ember-qunit

我有一个简单的对象(在app/models/fruit.js中),它有一个静态方法:

import Ember from 'ember';

const Fruit = Ember.Object.extend({

});

Fruit.reopenClass({
    createFruit() {
    }
}

export default Fruit;

我有一个测试(在tests/unit/models/fruit-test.js中):

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

moduleFor('model:fruit', 'Unit | Model | fruit', {
});

test('has static  method', function(assert) {
  let model = this.subject();
  assert.ok(model.createFruit);
});

这正确地失败了因为 - 据我所知 - model是我班级的实际实例,而不是班级本身。

testing docs

中提到了这一点
  

测试助手为我们提供了一些便利,例如处理查找的主题函数和我们测试对象的实例化

以及ember-qunit docs

  

您无法直接访问组件实例。

那么我如何测试类函数/属性而不仅仅是实例方法/属性?

1 个答案:

答案 0 :(得分:2)

对此的简单回答是简单地将类直接导入测试文件:

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

import Fruit from 'myapp/models/fruit';

moduleFor('model:fruit', 'Unit | Model | fruit');

test('has static  method', function(assert) {
    assert.ok(Fruit.createFruit);
});

我认为这个类可能会保存在this的某处,但这是一个更简单的方法