如何使用 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.
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
的某处,但这是一种更简单的方法
我有一个具有静态方法的简单对象(在 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.
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
的某处,但这是一种更简单的方法