2016-09-02 5 views
0

Ich versuche, meinen ersten Komponententest für eine Route zu schreiben.ember Unit Test Route - das ist undefined

Projekt/Dateien

actions: { 
    afterSave(savedFile){ 
    // ... some code 
    let controller = this.controllerFor('project.files'); 
    // ... 
    } 
} 

der Test:

test('save file', function(assert) { 
    let route = this.subject(); 
    console.log(route); 
    let project; 
    Ember.run(() => { 
    project = route.get('store').createRecord('project', { 
     id: '1', 
     name: 'test' 
    }); 

    let afterSave = route.get('actions.afterSave'); 
    afterSave(project); 
    }); 

    assert.ok(true); 
}) 

Das Problem, das ich Typeerror bin immer: Kann nicht lesen Eigenschaft 'controllerFor' undefinierter. Es sieht aus wie this ist undefiniert.

Antwort

2

Wenn Sie einen Blick auf Testing Routes Abschnitt von Ember Guides haben, können Sie seinen Vorschlag sehen, ist die Aktion und die Funktion zu trennen. Ich kann es vorschlagen. Es nutzt send Verfahren von Routen, wie zum Beispiel: route.send('afterSave');

Aber wenn Sie Ihren Code machen wollen laufen, rufen afterSave Aktion von Ihrem Testcode wie: afterSave.bind(route)(project);. Ref: bind function (. Ich tue dies nicht vorschlagen, auch Sie schlage ich nicht, dass Sie Aktion abzurufen wie: route.get('actions.afterSave'))

Verwandte Themen