2016-04-12 60 views
1

我想測試登錄組件使用摩卡什麼是用於測試異步的最佳方式作出反應成分

const loginView = require('./index'); 
const React = require('react'); 
const ReactDOM = require('react-dom'); 
const ReactTestUtils = require('react-addons-test-utils'); 
const chai = require('chai'); 
const jsdom = require('mocha-jsdom'); 
const injectTapEventPlugin = require('react-tap-event-plugin'); 
const nock = require('nock'); 
const api = require('../../configuration').api; 

injectTapEventPlugin(); 
chai.should(); 

describe('login',() => { 

    beforeEach(() => { 
    jsdom(); 
    }); 

    it('show error dialog when username or password is invalid', (done) => { 
    const login = ReactTestUtils.renderIntoDocument(React.createElement(loginView)); 

    nock(api).post('user/access-token').reply(200); 

    login.setState({ 
     email: '[email protected]', 
     password: 'wrong-password' 
    }); 

    ReactTestUtils.Simulate.touchTap(ReactDOM.findDOMNode(login.refs.signin).firstChild); 

    setTimeout(() => { 
     login.state.showErrorDialog.should.equal(true); 
     login.setState({ 
     showErrorDialog: false 
     }); 
     done(); 
    }, 1500); 
    }); 
}); 

當按鈕符號點擊,Ajax請求檢查用戶名和密碼(將SuperAgent)反應。

問題是我不想使用setTimeout函數,我喜歡在ajax請求完成時使用回調或承諾。可能嗎 ?

回答

0

它似乎使用setTimeoutdone目前是這個問題的最簡單的方法。

我會改變的唯一的事情是消除1500毫秒的延遲,這是不必要的,因爲節點是單線程的。

相關問題