2017-10-06 2 views
0

Ich habe eine Testdatei für ein Login-Formular geschrieben. Die Redirect-Seite ist ein Dashboard mit einer Zeittimer-Sidebar. Jetzt, als ich das getestet habe, wurde ich nach 60000ms zu einer Testzeit. Kann ich die Zeit-Tickerkomponente im Glutentest ausschließen?Login Test mit Ember Test

Mein Testcode:

import {test} from 'qunit'; 
import moduleForAcceptance from 'frontend/tests/helpers/module-for-acceptance'; 

moduleForAcceptance('Acceptance | Login', { 
    integration: true 
}); 

test('visiting /user_session/new', function (assert) { 
    visit('/user_session/new'); 
    fillIn('input#login-email', '[email protected]'); 
    fillIn('input#login-password', 'blabla'); 
    click('button.btn-primary'); 

    let done = assert.async(); 

    andThen(() => { 
    Ember.run.later(null,() => { 
     assert.equal(currentURL(), '/dashboard', 'redirects to the dashboard'); 
     done(); 
    }, 1000); 
    }); 
}); 

Die Zeit Ticker Komponente:

import Ember from 'ember'; 

export default Ember.Component.extend({ 
    tagName: 'time', 

    date: moment().format('DD.MM.YYYY'), 

    time: Ember.computed('value', function() { 
    return moment().format('HH:mm:ss'); 
    }), 

    didInsertElement: function() { 
    this.tick(); 
    }, 

    tick: function() { 
    this.set('nextTick', Ember.run.later(this, function() { 
     this.notifyPropertyChange('value'); 
     this.tick(); 
    }, 1000)); 
    }, 

    willDestroyElement: function() { 
    Ember.run.cancel(this.get('nextTick')); 
    } 
}); 

Antwort

0

Wrap tickt Mechanismus in einem Dienst und diesen Dienst in Ihrer Komponente verwenden.

Testen Sie während des Tests diesen Dienst und injizieren Sie den Schein in Ihre Komponente. Obwohl es in meinem Fall keine gute Idee ist, mich im Acceptance-Test zu verspotten, kann ich in diesem Szenario mit spöttischem Vorgehen gehen.

Sie können auch die Live - Aktualisierung ember-moment in Ihren Seiten verwenden. Es bietet die Live-Aktualisierung der Zeit. Here gibt es.

+0

Oh, ja, das ist eine gute Idee. Danke. – Daniel