2017-03-03 4 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

I입니다 이 경우에 "moduleFor"가 없으면 빠져 나올 수 있을지 궁금하십니까? 그것은 당신이 사용하지 않을 백그라운드에서 인스턴스를 생성하는 데 약간의 낭비가되는 것처럼 보입니다. 객체가 전혀 인스턴스화되지 않은 정적 메소드를 테스트하는 더 깨끗한 방법이 있는지 궁금합니다. –