2017-03-03 29 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」?讓它在背景中創建一個你永遠不會使用的實例似乎有點浪費,我想知道是否有一種更簡潔的方法來測試靜態方法,而不需要實例化對象 –