gpt4 book ai didi

testing - 测试异步 react 组件的最佳方法是什么

转载 作者:行者123 更新时间:2023-11-28 20:53:18 27 4
gpt4 key购买 nike

我想使用 mocha 测试登录组件的 react

const loginView = require('./index');
const React = require('react');
const ReactDOM = require('react-dom');
const ReactTestUtils = require('react-addons-test-utils');
const chai = require('chai');
const jsdom = require('mocha-jsdom');
const injectTapEventPlugin = require('react-tap-event-plugin');
const nock = require('nock');
const api = require('../../configuration').api;

injectTapEventPlugin();
chai.should();

describe('login', () => {

beforeEach(() => {
jsdom();
});

it('show error dialog when username or password is invalid', (done) => {
const login = ReactTestUtils.renderIntoDocument(React.createElement(loginView));

nock(api).post('user/access-token').reply(200);

login.setState({
email: 'test@email.tld',
password: 'wrong-password'
});

ReactTestUtils.Simulate.touchTap(ReactDOM.findDOMNode(login.refs.signin).firstChild);

setTimeout(() => {
login.state.showErrorDialog.should.equal(true);
login.setState({
showErrorDialog: false
});
done();
}, 1500);
});
});

单击登录按钮时,ajax 请求检查用户名和密码(使用 super 代理)。

问题是我不想使用setTimeout 函数,我喜欢在ajax 请求完成时使用回调或 promise 。可能吗?

最佳答案

似乎使用 setTimeoutdone 是目前解决这个问题最简单的方法。

我唯一要更改的是删除 1500 毫秒的延迟,这是不必要的,因为节点是单线程。

关于testing - 测试异步 react 组件的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36573175/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com