我正在尝试根据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');
我该如何测试?
答案 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')
})