Javascript 听一听用酶舔的声音
我想断言,当一个被禁用的按钮被单击时,它的Javascript 听一听用酶舔的声音,javascript,reactjs,jestjs,enzyme,Javascript,Reactjs,Jestjs,Enzyme,我想断言,当一个被禁用的按钮被单击时,它的onClick事件不会被触发。我如何用酶来做这个?请参阅下面的示例代码。谢谢 sampleButton.jsx: import React from 'react'; const SampleButton = () => ( <button disabled={true} onClick={() => console.log('You clicked me!')} test-attr="button"
onClick
事件不会被触发。我如何用酶来做这个?请参阅下面的示例代码。谢谢
sampleButton.jsx:
import React from 'react';
const SampleButton = () => (
<button
disabled={true}
onClick={() => console.log('You clicked me!')}
test-attr="button"
type="button"
>
Click Me
</button>
);
export default SampleButton;
import React from 'react';
import { shallow } from 'enzyme';
import SampleButton from './sampleButton';
test('cannot click button if disabled', () => {
const wrapper = shallow(<SampleButton />);
const button = wrapper.find('[test-attr="button"]');
button.simulate('click');
// assert that `onClick` has not been fired
});
从“React”导入React;
const SampleButton=()=>(
console.log('你点击了我!')}
测试属性=“按钮”
type=“按钮”
>
点击我
);
导出默认采样按钮;
sampleButton.test.jsx:
import React from 'react';
const SampleButton = () => (
<button
disabled={true}
onClick={() => console.log('You clicked me!')}
test-attr="button"
type="button"
>
Click Me
</button>
);
export default SampleButton;
import React from 'react';
import { shallow } from 'enzyme';
import SampleButton from './sampleButton';
test('cannot click button if disabled', () => {
const wrapper = shallow(<SampleButton />);
const button = wrapper.find('[test-attr="button"]');
button.simulate('click');
// assert that `onClick` has not been fired
});
从“React”导入React;
从“酶”导入{shall};
从“/SampleButton”导入SampleButton;
测试('如果禁用,则无法单击按钮',()=>{
常量包装器=浅();
const button=wrapper.find('[test attr=“button”]');
按钮。模拟('click');
//断言“onClick”未被激发
});
实际上没有必要对其进行测试。disabled
prop是底层HTML的一部分,因此通过测试它,您只需测试HTML按钮是否有效(您可以相信它确实有效)。更好的测试可能是在您尝试测试的条件下检查disabled
属性是否设置为true
也就是说,一种方法是通过props
将onClick
注入SampleButton
,如下所示:
const SampleButton = ({ onClick }) => (
<button
disabled={true}
onClick={onClick}
test-attr="button"
type="button"
>
Click Me
</button>
);
test('cannot click button if disabled', () => {
// Set up a mock function that allows you to make assertions
const mockOnClick = jest.fn();
// Pass it into SampleButton
const wrapper = shallow(<SampleButton onClick={mockOnClick} />);
const button = wrapper.find('[test-attr="button"]');
button.simulate('click');
// Make assertions
expect(mockOnClick).not.toHaveBeenCalled();
});
constsamplebutton=({onClick})=>(
点击我
);
然后你可以像这样测试它:
const SampleButton = ({ onClick }) => (
<button
disabled={true}
onClick={onClick}
test-attr="button"
type="button"
>
Click Me
</button>
);
test('cannot click button if disabled', () => {
// Set up a mock function that allows you to make assertions
const mockOnClick = jest.fn();
// Pass it into SampleButton
const wrapper = shallow(<SampleButton onClick={mockOnClick} />);
const button = wrapper.find('[test-attr="button"]');
button.simulate('click');
// Make assertions
expect(mockOnClick).not.toHaveBeenCalled();
});
test('如果禁用,则无法单击按钮',()=>{
//设置一个模拟函数,允许您进行断言
const mockOnClick=jest.fn();
//把它传给SampleButton
常量包装器=浅();
const button=wrapper.find('[test attr=“button”]');
按钮。模拟('click');
//断言
expect(mockOnClick).not.tohavebeincall();
});
注意,simulate
不支持disabled
属性。有关更多详细信息,请参阅。我没有看到该问题!我做了一些测试。。。有趣的是,这似乎只是shallow
:(请参见counter.test.js
的测试)