我的测试失败,因为我不知道在onChange
值中声明什么,
describe("App", function() {
const wrapper = shallow(<App />);
it("should have an input", function() {
expect(
wrapper.contains(<input type="text" onChange={null} />)
).toBeTruthy();
});
});
我只是在组件中有这个
<input type="text" onChange={this.changeInput} />
答案 0 :(得分:1)
我在这里要做的是首先检查输入元素是否存在:
0
1
1
0
1
0
然后,通过验证,分别验证it('verifies that an input element is rendered', () => {
expect(wrapper.exists('input')).toBeTruthy();
});
函数是否存在。我不是支持在单个onChange
语句中进行多次验证的人,这仅仅是因为如果任何it
语句触发失败,那么下面的所有expect
语句都不会执行。因此,我将使用单独的expect
,如下所示:
it
另一种选择是为it('verifies that an onChange function is set`, () => {
expect(typeof wrapper.find('input').prop('onChange')).toBe('function');
});
道具设置一个模拟函数,并验证它是否被正确调用,如下所示:
onChange
答案 1 :(得分:1)
should have an input
测试根本不应该涉及onChange
。可以类似于the reference的建议进行测试:
expect(wrapper.find('input[type="text"]')).to.have.lengthOf(1);
onChange
可以在另一项测试中进行测试,类似于this question中的显示方式。
答案 2 :(得分:0)
您可以期待(wrapper.find('input')。length).toBe(1)
不确定语法或函数名称,但是它在那里:)