翻译不是函数 Admin-On-Rest 测试

translate is not a function Admin-On-Rest test

我正在尝试根据 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)

即上面代码link上的这一行

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

我该如何测试?

您必须将 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')
})