2013-04-20 4 views
1

이것은 일반적인 테스트의 첫 번째 단계이므로 어떻게 처리해야할지 모르겠습니다. 생산 중에 REST 어댑터를 사용합니다. - 개발 중 설비.Jasmine으로이 Ember-Data 모델을 테스트하려면 어떻게해야합니까?

이 사용자 모델을 가진 예를 들면 :

Sks.User = DS.Model.extend 
    name: DS.attr("string") 
    email: DS.attr("string") 

    gravatar: Ember.computed(-> 
    email = @get("email") || "" 
    "http://www.gravatar.com/avatar/" + MD5(email) 
).property("email") 

    firstName: Ember.computed(-> 
    fName = @get('name').split(' ')[0] 
).property("name") 

    lastName: Ember.computed(-> 
    lName = @get('name').split(' ')[1] 
).property("name") 

가 어떻게 재스민과 TDD/BDD를 사용하여 테스트 할 수 있습니까? 나는 이름, 성, gravatar 논리를 테스트해야하지만 어떻게 그것을 재스민으로 번역 할 수 있을까요? 나는 최근에 테스트에 대해 많이 읽었지만 당신이 알고있는 이론은 실습과 다르며 벽에 닿았습니다. :(

은 내가 JSON을 얻기 위해 서버를 시뮬레이션해야 아니면기구를 사용해야합니까?

답변

0

내가 전혀, 당신은 서버 처리해서는 안 모델 테스트 (또는 서버를 시뮬레이션) 단위에 대한 생각 모델에 대한 단위 테스트는 계산 된 속성 (이 경우 gravatar, firstname, lastname) 및 기타 논리 (수명주기 콜백, 동작 등)에 대한 것입니다. 이러한 테스트는 매우 간단합니다. 대부분 서버와 분리되어 있습니다. 다음과 같은 형태가 있습니다 :

describe "gravatar property", -> 
    it "should append the md5 of the email to the gravatar path", -> 
    user = Sks.User.createRecord name: "my name", email: "[email protected]" 
    expect(user.get('gravatar')).toBe "http://www.gravatar.com/avatar/#{MD5(user.get('email')}" 

Ember-Data의 RESTAdapter를 사용하고 있다면 잘 테스트되었다고 추측 할 수 있습니다 (모델이 어댑터 데이터로 올바르게로드되는 것을 보여주기 위해 더 높은 수준의 통합 테스트를 작성하려고 할 수도 있습니다). 자체 어댑터를 작성하는 경우 별도의 단위 테스트가 필요합니다. 응용 프로그램의 일부 단위 테스트를 위해

를로드하기 위해 무엇

, 당신은 정말로 유일한 주요 네임 스페이스 (예를 들어, Sks = Ember.Application.create(...))와 모델 정의 (예를 들어, Sks.User = DS.Model.extend(...))와 종속성을로드해야합니다. 모델을 만들 때 모조/스텁 (mock/stub)을 입력하면 스텁이 생깁니다. (What is dependency injection? 참조)

테스트 환경에서 Ember의 라우터 자동 로딩과 관련하여 몇 가지 문제가있었습니다. 라우터를 사용하지 못하게 할 수 있습니다 (모든 테스트를로드하는 경우에만 문제가 발생합니다. 모든 자바 스크립트 자산이 레일즈 서버에 의해 컴파일되고 브라우저에서 테스트가 실행되도록 jasminerice를 사용하고 있습니다). - 새로운 라우터에서는 deferReadiness : http://emberjs.com/api/classes/Ember.Application.html#method_deferReadiness을 사용할 수 있다고 생각합니다. 이전에 나는 autoinit: false을 설정하고있었습니다.

+0

단일 모델을 테스트하려면 전체 앱을로드해야합니까? 아니면 최소로만로드 할 수 있습니까? (Ember의 경우로드해야하는 항목은 무엇입니까?) – wryrych

+0

내 업데이트를 확인하십시오. - 모델 단위 테스트의 경우 기본적으로 최소한 (네임 스페이스 + 모델 + 종속성 만로드하면되지만 단위 테스트의 종속성은 없어야합니다) –

관련 문제