2014-01-27 94 views
3

我試圖測試調用移動操作將導致模態視圖的控制器設置與適當的模型。試圖在控制器上發送操作,導致單元測試失敗Ember.js

asyncTest("attempting to move directories will setup the folder_tree_controller's model", 1, -> 
    User.create({email: '[email protected]', session: 'session_token', card: Cards.FIXTURES[0].id}) 
    cardController = App.__container__.lookup('controller:card') 
    Em.run -> cardController.set('model', null) 

    Em.run -> controller.send('move') 
    wait() 

    ok(cardController.get('model')) 
    start() 
) 

控制器要點:

Controller = Ember.Controller.extend({ 
    actions: { 
    move: -> 
     self = @ 
     @get('store').find('card', User.current().directory).then (card) -> 
     self.send('showMoveDialog', card) 
     false 
    } 
}) 
測試執行我出錯了,並收到以下消息時

但是:

Error: Can't trigger action 'showMoveDialog' because your app hasn't finished transitioning into its first route. To trigger an action on destination routes during a transition, you can call `.send()` on the `Transition` object passed to the `model/beforeModel/afterModel` hooks. 
Source:  
    at Test.QUnitAdapter.Test.Adapter.extend.exception (http://localhost:8000/vendor/ember/index.js:40219:5) 
    at superWrapper [as exception] (http://localhost:8000/vendor/ember/index.js:1230:16) 
    at Ember.RSVP.onerrorDefault (http://localhost:8000/vendor/ember/index.js:16520:28) 
    at Object.__exports__.default.trigger (http://localhost:8000/vendor/ember/index.js:8399:13) 
    at Promise._onerror (http://localhost:8000/vendor/ember/index.js:9123:16) 
    at Promise.publishRejection (http://localhost:8000/vendor/ember/index.js:9530:17) 
    at Object.DeferredActionQueues.flush (http://localhost:8000/vendor/ember/index.js:5654:24) 
    at Object.Backburner.end (http://localhost:8000/vendor/ember/index.js:5745:27) 

我失去的東西,而試圖測試設置的模式視圖?

+0

是' controller.send ...'應該是'cardController.send ...'? – Kingpin2k

+0

不,controller.send觸發將設置cardController的控制器上的移動操作。我的cardController是支持模態視圖的控制器。 – KnownSubset

回答

2

設置您的控制器像這樣,這將是能夠調用發送您的測試:

cardController = App.CardController.create({ 
    container: App.__container__ 
}); 

這,而不是做容器 .lookup(...)

+0

我實際上不得不在我的測試中對控制器進行更改,而不是App.CardController。 – KnownSubset