перевод не является функцией Admin-On-Rest test

Я пытаюсь проверить пустое текстовое поле имени пользователя на моей странице входа в систему на основе страницы входа администратора на отдыхе.

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')
    })

})

Я получаю сообщение об ошибке в функции проверки формы редуктора.

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

т.е. эта строка по ссылке в приведенном выше коде

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

Как я могу проверить это?


person tariq zafar    schedule 12.10.2017    source источник


Ответы (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')
})
person Gildas Garcia    schedule 13.10.2017
comment
Большое спасибо за твою помощь. Но я все еще получаю одно предупреждение. Свойство locale помечено как необходимое в TranslationProvider, но его значение равно undefined. Также у меня есть уведомление на моей странице входа, чтобы сообщить о статусе входа. Я получаю сообщение об ошибке Невозможно прочитать уведомление о свойстве неопределенного . Как обновить эту глобальную переменную состояния? - person tariq zafar; 24.10.2017