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
的测试)