translate不是Admin-On-Rest测试功能

时间:2017-10-12 13:48:01

标签: reactjs redux-form admin-on-rest

我正在尝试根据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 个答案:

答案 0 :(得分: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')
})