2017-10-12 59 views
0

我想在我的登錄頁面上基於admin-on-rest登錄頁面測試空的用戶名文本字段。翻譯是不是一個功能管理員休息測試

https://github.com/marmelab/admin-on-rest/blob/master/src/mui/auth/Login.js

我的測試用例是這樣的。

import Login, { renderTextField } from '../../../modules/core/Login'; 
import {propTypes, reduxForm, Field, reducer as formReducer} from 'redux-form'; 
import redux, { createStore, combineReducers } from 'redux' 
import { Provider } from 'react-redux' 

describe ('<Login/>',() => { 
    let container 
    let submitting 
    let onSave 
    let store 
    let tn 

    beforeEach(()=>{ 
    submitting = false 
    //tn= sinon.spy() 
    onSave = Promise.resolve() 
    }) 

    it("shows help text when first name is set to blank",() => { 
    store = createStore(combineReducers({ form: formReducer })) 
    tn = (label) => label; 
    const props = { 
     onSave, 
     submitting: false, 
     theme: customTheme, 
     translate: tn, 
     store 
    } 
    container = mount(
     <Provider store={store}> 
     <Login {...props}/> 
     </Provider> 
    ) 
     const input = container.find('TextField').first() 
     input.simulate('blur') 
     console.log(input.debug()) 
     expect(input.props.errorText).to.equal('Required') 
    }) 

}) 

我在redux表單驗證函數中得到一個錯誤。

TypeError: translate is not a function 
at validate (C:/src/modules/core/Login.js:165:25) 

即該行的鏈接在上面的代碼中

errors.username = translate('aor.validation.required'); 

如何測試呢?

回答

1

你必須包括TranslationProvider

import { TranslationProvider } from 'admin-on-rest'; 
/* ... */ 

it("shows help text when first name is set to blank",() => { 
    store = createStore(combineReducers({ form: formReducer })) 
    const props = { 
     onSave, 
     submitting: false, 
     theme: customTheme, 
     store 
    } 
    container = mount(
     <Provider store={store}> 
      <TranslationProvider locale="en"> 
       <Login {...props}/> 
      </TranslationProvider> 
     </Provider> 
    ) 
    const input = container.find('TextField').first() 
    input.simulate('blur') 
    console.log(input.debug()) 
    expect(input.props.errorText).to.equal('Required') 
}) 
+0

非常感謝你的幫助。但我仍然得到一個警告。 「'locale'在'TranslationProvider'中被標記爲必需,但其值爲'undefined'」。 另外我的登錄頁面也有一個通知來報告登錄狀態。我收到一條錯誤「無法讀取屬性」通知「的未定義」。我如何更新這個全局狀態變量? –