Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 超过了XXXms的超时时间。对于异步测试和挂钩,请确保;完成();被称为_Reactjs_React Native_React Native Ios_React Native Router Flux_Detox - Fatal编程技术网

Reactjs 超过了XXXms的超时时间。对于异步测试和挂钩,请确保;完成();被称为

Reactjs 超过了XXXms的超时时间。对于异步测试和挂钩,请确保;完成();被称为,reactjs,react-native,react-native-ios,react-native-router-flux,detox,Reactjs,React Native,React Native Ios,React Native Router Flux,Detox,我使用排毒确实有问题,我完全不知道为什么。我知道这类问题以前已经发布过,但似乎没有一个能真正回答我的问题。我将首先详细解释它,然后发布一些代码和配置 解释 我想先试试我的应用程序的登录功能。我有一个第一个屏幕,用户输入他的团队,然后按下按钮转到另一个屏幕登录。我请求服务器检查团队是否存在。如果团队出错,他将收到错误消息。我想测试是否显示此错误消息 运行以下测试时,将显示红色错误消息,但测试将在超时后结束。此图显示测试停止的位置 代码 以下是测试: description('Login',()=

我使用
排毒确实有问题,我完全不知道为什么。我知道这类问题以前已经发布过,但似乎没有一个能真正回答我的问题。我将首先详细解释它,然后发布一些代码和配置

解释 我想先试试我的应用程序的登录功能。我有一个第一个屏幕,用户输入他的团队,然后按下按钮转到另一个屏幕登录。我请求服务器检查团队是否存在。如果团队出错,他将收到错误消息。我想测试是否显示此错误消息

运行以下测试时,将显示红色错误消息,但测试将在超时后结束。此图显示测试停止的位置

代码 以下是测试:

description('Login',()=>{
它('应该在坏团队之后显示错误消息',async()=>{
wait元素(by.id('selectTeam_teamInput')).typeText('failingTeam');
wait元素(by.id('selectTeam_domainInput')).replaceText('mydomain.cloud');
wait元素(by.id('selectTeam_nextButton')).tap();
wait expect(元素(by.id('selectTeam_errorMessage')).toExist();
wait expect(元素(by.id('selectTeam_errorMessage')).tobevible();
});
});
以下是视图(goToLogin方法触发异步调用,该调用将prop
OrganizationInfosstatus
更改为
success
error
。出现
error
时,我显示此错误消息):


{this.props.organizationInfosstatus==='error'&&(
无效团队
)}
请插入您的团队名称
this.setState({teamName})}
onSubmitEditing={this.goToLogin}
returnKeyType=“go”
underlineColorAndroid=“透明”
值={this.state.teamName}
/>
.
this.setState({domain})}
onSubmitEditing={this.goToLogin}
returnKeyType=“go”
underlineColorAndroid=“透明”
值={this.state.domain}
keyboardType=“电子邮件地址”
ref=“domainField”
/>
{
this.setState({domain:'});
this.refs.domainField.focus();
}}
hitSlop={functions.hitSlop()}
>
下一个
这是我的
init.js

require('babel-polyfill');
const detox = require('detox');
const config = require('../package.json').detox;

before(async () => {
  await detox.init(config);
});

after(async () => {
  await detox.cleanup();
});
最后是我的
mocha.opts

--recursive
--timeout 20000
--bail
--file e2e/init.js
我使用的是
react native router flux
,但以下是不同版本的安装程序:

"react": "16.8.3",
"react-native": "^0.59.4",
"react-native-router-flux": "4.1.0-beta.5",
"react-navigation": "3.6.1",
"detox": "^12.1.3",
其他资料 在升级到
0.59
之前,我是在
0.57.1
上,同样的问题。有以前的版本或路由器
4.0.6
,同样的问题。我尝试了
expect
,尝试了
waitFor
和超时,同样的问题:/

我还对一个有效的团队进行了同样的测试,看看它是否基本上找到了下一个视图。它以完全相同的方式结束超时

如果您需要更多信息,请告诉我:)


提前谢谢

我想您可能需要确保调用了
done()
?您可以尝试将测试更改为:
it('should show error message after bad team',async(done)=>{
并在末尾调用
done()
?是的,也尝试了。它从未到达。它看起来像
wait expect(by.id('selectTeam\u errorMessage'))。toExist()
即使消息被显示,也会导致无限循环如何使用?
waitFor(expect(element)(by.id('selectTeam\u errorMessage'))).toExist().withTimeout(2000);
也尝试过。同样的问题。
等待waitFor(element)(by.id('selectTeam\u errorMessage'))).toExist().withTimeout(2000);等待waitFor(element(by.id('selectTeam_errorMessage')).tobevicible().withTimeout(2000);done();
测试如下。超时方式与此完全相同