2017-10-12 4 views
0

admin-on-rest 로그인 페이지를 기반으로 로그인 페이지에서 빈 사용자 이름 텍스트 필드를 테스트하려고합니다.translate is not function 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 양식 검증 기능에 오류가 발생합니다.

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

가 어떻게이 문제를 테스트 할 수 있습니다 위의 코드에있는 링크에이 라인 즉

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

?

답변

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' prop가'TranslationProvider'에서 필수로 표시되었지만 그 값은'undefined'입니다." 또한 로그인 상태에 대한보고를 위해 로그인 페이지에도 알림이 있습니다. "정의되지 않은 속성 '알림을 읽을 수 없습니다."오류가 발생합니다. 이 전역 상태 변수를 어떻게 업데이트합니까? –