我有一個簡單的測試:等待酶和玩笑條件(最終一致性,有超時斷言)
import React from 'react';
import GenericButton from 'components/buttons/GenericButton';
import { shallow } from 'enzyme';
import { shallowToJson } from 'enzyme-to-json';
describe('Generic Button',() => {
test('Button action called when clicked',() => {
var clicked = false;
const component = shallow(
<GenericButton action={() => {
clicked = true;
}}
id="testComponent"/>
);
component.find('testComponent').first().simulate('click');
expect(clicked).toBeTruthy();
});
});
但是作爲動作最終做到了這一點將會失敗,
如果我設置斷言最終會發生(例如使用的setTimeout),將工作
但它會更好,如果我做的斷言(發現這個使用茉莉花例子)之前以下
東西210 waitsFor(() => {
return clicked;
}, "the value to change", 1000);
什麼是酶/笑話等價的呼籲?
編輯:成分的含量
render() {
return <Button id={this.props.id}
key={this.props.id}
onClick={() => this.props.action()}
bsStyle={this.props.style}>
{this.props.text}
</Button>;
}
(巴頓是一個第三方庫組件)
在一個單位,你不應該需要這個。你能發佈你想測試的代碼嗎? –
我確保在上述情況下點擊按鈕的動作。 – mangusbrother
當然,但是'component.find('testComponent')。first()。simulate('click');'運行時發生的唯一事情就是找到'onClick'屬性並調用它,所以沒有這種方式在每次測試中都不起作用。由於沒有涉及真正的DOM,這只是一個函數調用。所以'waitsFor'唯一的用例就是當你在一個真正的或無頭的瀏覽器中運行接受程序。但是,當你使用Jest時,情況並非如此。 –