2013-12-21 4 views
0
var model, controller; 

// Set up the controller in a new container. 
// On tear down, set the variables to null, 
// we reset the app on setup. 
module('User Edit Controller', { 
    setup: function(){ 
     AisisPlanner.reset(); 
     controller = AisisPlanner.__container__.lookup('controller:user_edit'); 
     model = AisisPlanner.User.store.createRecord('user', { 
      name: 'john doe', 
      userName: 'john_doe', 
      email: '[email protected]', 
      bio: '', 
      pictureUrl: '', 
      role: 'Administrator' 
     }); 
     controller.set('model', model) 
    }, 
    teardown: function(){ 
     controller = null; 
     model = null 
    } 
}); 

test('capatalize_user_name', function(){ 
    model.set('userName', 'John doe') 
    equal(controller.get('userName'), 'JOHN DOE', 'all caps'); 
}); 

다음 테스트는 현재 컨테이너와 모델에서 컨트롤러를 설정하는 과정을 간단하게 설명합니다. 그런 다음 해당 모델에 정보를 설정하고 테스트에서이 이름을 사용하여 이름을 알 수 있습니다. Ember JS, 컨트롤러

문제

내가 오류를 얻고 있다는 것입니다 :

Setup failed on capatalize_user_name: 'undefined' is not an object (evaluating 'AisisPlanner.User.store.createRecord') 

Died on test #2 global [email protected]://localhost:3000/assets/controllers/user_edit_controller_test.js?body=1:26:5: 'undefined' is not an object (evaluating 'model.set') 

나는에서 아이디어를 얻었다 : 내가 생각 this blog post on how to test controllers. 그것의 대부분은 구식하지만 난 그 어느 것도 덜을 시도하지 않습니다. 어떤 아이디어가 이것을 고치는 방법?

답변

2

, 나는 다음을 수행했다 Ember.run()은 테스트/컨트롤러/모델의 설정 둘 다에 있어야했습니다.

그러면 테스트는 모델 userName을 JOHN DOE로 설정해야합니다. 세트는 사용자가 무언가를 설정한다는 것을 의미하기 때문에 컨트롤러는 "오, 나중에 존 대문자가 대문자와 같을 수 없습니다"라는 의미입니다.

0

가게는 모델 클래스에 존재하지 않지만,이 컨트롤러

controller = AisisPlanner.__container__.lookup('controller:user_edit'); 
model = controller.get('store').createRecord('user', {.... 

랩에 않는 엠버 실행 문에 실패한 모든 선 (난이 실패한 라인이 있는지 확실하지 않습니다 또는

var model, controller; 

// Set up the controller in a new container. 
// On tear down, set the variables to null, 
// we reset the app on setup. 
module('User Edit Controller', { 
    setup: function(){ 
     AisisPlanner.reset(); 
     Ember.run(function(){ 
      controller = AisisPlanner.__container__.lookup('controller:user_edit'); 
      model = controller.get('store').createRecord('user', { 
       name: 'Jhon Doe', 
       userName: 'John_Doe', 
       email: '[email protected]', 
       bio: '', 
       pictureUrl: '', 
       role: 'Administrator' 
      }); 
      controller.set('model', model) 
     }); 
    }, 
    teardown: function(){ 
     controller = null; 
     model = null 
    } 
}); 

test('capatalize_user_name', function(){ 
    Ember.run(function(){ 
     model.set('userName', 'JOHN DOE') 
     equal(controller.get('userName'), 'JOHN DOE', 'all caps'); 
    }); 
}); 

: 아니, 그냥 예)이 테스트를 통과하기 위해 그래서

Em.run(function(){ 
    controller.set('model', model); 
}); 
+0

왼손잡이 만 입력하는 동안 하하, 분명히 말더듬 거리는 소리가 오타가 아닙니다. – Kingpin2k

+0

이제 다음과 같은 두 가지 새로운 오류가 발생합니다. capatalize_user_name에서 설치가 실패했습니다. 어설 션 실패 : 실행 모드의 자동 실행을 비활성화 한 테스트 모드가 켜져 있습니다. Ember.run에 비동기 부작용이있는 코드를 래핑해야합니다. 출처 : \t http : // localhost : 3000/assets/ember.js? body = 1 : 61 테스트 # 2 전역 코드 @ http : // localhost : 3000/assets/controllers/user_edit_controller_test.js? body = 1 : 26 : 5 : 'undefined'가 객체가 아닙니다 ('model.set'평가) – TheWebs

+0

답변에 ember를 실행 한 예를 넣었습니다. 테스트에서 모델이 정의되지 않았습니까? – Kingpin2k