2017-10-12 85 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'”。 另外我的登录页面也有一个通知来报告登录状态。我收到一条错误“无法读取属性”通知“的未定义”。我如何更新这个全局状态变量? –