reactjs - 如何在测试中获取反应应用状态 ['Key'] 的值?
问题描述
我正在尝试对反应应用程序进行测试,但遇到了问题。我无法jest
正常工作,所以我一直在尝试解决它,这导致了我目前的问题。我的测试不起作用的原因是因为我调用 state 中键值的方式要求我使用enzyme
in jest
。他们是一种在不使用 jest 的情况下获取反应应用程序内部状态键值的方法吗?我该怎么做?
这是我的反应应用程序中的功能:
setTimeMonth = (time) => {
const today = moment().format('YYYY-MM-DD');
const before = moment().subtract(time, 'months').format('YYYY-MM-DD');
this.setState({Date2: today});
this.setState({Date1: before});
}
这是对该功能的测试:
it('setTimeMonth(number)', () => {
const wrapper = new ReactPage;
expect(wrapper.state('Date1').toMatch(""));
expect(wrapper.state('Date2').toMatch(""));
wrapper.setTimeMonth(1);
expect(wrapper.state('Date1').toMatch(moment().format('YYYY-MM-DD')));
expect(wrapper.state('Date2').toMatch(moment().subtract(1, 'Month').format('YYYY-MM-DD')));
});
解决方案
这是一个工作示例:
例子.js:
import * as React from 'react';
import moment from 'moment';
export class Example extends React.Component{
constructor(props) {
super(props);
this.state = { Date1: '', Date2: '' };
}
setTimeMonth = (time) => {
const today = moment().format('YYYY-MM-DD');
const before = moment().subtract(time, 'months').format('YYYY-MM-DD');
this.setState({Date2: today});
this.setState({Date1: before});
};
render() {
return <div/>
}
}
示例.test.js:
import * as React from 'react';
import { shallow } from 'enzyme';
import moment from 'moment';
import { Example } from './example';
describe('Example', () => {
it('setTimeMonth(number)', () => {
const wrapper = shallow(<Example/>);
expect(wrapper.state('Date1')).toBe('');
expect(wrapper.state('Date2')).toBe('');
wrapper.instance().setTimeMonth(1);
expect(wrapper.state('Date2')).toMatch(moment().format('YYYY-MM-DD'));
expect(wrapper.state('Date1')).toMatch(moment().subtract(1, 'months').format('YYYY-MM-DD'));
});
});
推荐阅读
- equals - 使用等于运算符将输出什么代码
- flutter - 如何在 AutoCompleteTextField Flutter 中将文本居中
- android - ItemTouchHelper onMove 更新物品位置
- javascript - macOS Catalina 上的 Safari - 开发人员工具中缺少“调试器”选项卡?
- flutter - Flutter - 将搜索委托结果字符串返回到文本字段
- java - 发布应用后通过新数据集更新 RecyclerView
- javascript - 显示 html.index 时表达 js 问题?
- python - 在 HTML 中使用动作标签传递参数
- cloud-init - cloud-init:可以合并 write_files 吗?
- html - 如何在cols bootstrap中为滑块设置相等的高度