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

How can I test a class function with 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 是我的 class 的实际实例,而不是 class 本身。

这个是在testing docs中提到的:

Test helpers provide us with some conveniences, such as the subject function that handles lookup and instantiation for our object under test.

以及ember-qunit docs:

You do not have direct access to the component instance.

那么我如何测试 class function/property 而不仅仅是实例 methods/properties?

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

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

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