2017-10-12 5 views
0

J'essaie de tester le champ de texte du nom d'utilisateur vide sur ma page de connexion en fonction de la page de connexion admin-on-reste.traduire n'est pas une fonction Test Admin-On-Rest

https://github.com/marmelab/admin-on-rest/blob/master/src/mui/auth/Login.js

Mon testcase est comme ça.

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

}) 

Je reçois une erreur dans la fonction de validation redux form.

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

-à-dire cette ligne sur le lien ci-dessus dans le code

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

Comment puis-je tester cela?

Répondre

1

Vous devez inclure les TranslationProvider aussi

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

Merci beaucoup pour votre aide. Mais j'ai toujours un avertissement. "Le paramètre" locale "est marqué comme requis dans" TranslationProvider ", mais sa valeur est" undefined "." J'ai également une notification dans ma page de connexion pour signaler l'état de connexion. Je reçois une erreur "Impossible de lire la propriété 'notification' de indéfini". Comment mettre à jour cette variable d'état global? –