2017-03-03 92 views
0

我有一个简单的对象(在app/models/fruit.js),有一个静态方法:如何使用Ember qUnit测试类函数?

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

您不必到组件实例的直接访问。

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

回答

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地方保存,但,这是一个更简单的方法

+1

我想知道在这种情况下是否可以避开“moduleFor”?让它在背景中创建一个你永远不会使用的实例似乎有点浪费,我想知道是否有一种更简洁的方法来测试静态方法,而不需要实例化对象 –