我正在尝试使用开关切换为页面创建集成测试。
<Switch style={settingsStyles.switch}
value={this.props.value}
onValueChange={this.onValueChange}
testID={`FirstToggle`}/>
我开始这样写测试:
let toggle = element(by.id(`FirstToggle`));
await expect(toggle).toHaveValue(`0`);
它可以很好地使用默认值。但是,我还想确保在点击后,值会更改并保持更改。 所以我更新了测试,使其看起来像这样:
let toggle = element(by.id(`FirstToggle`));
await expect(toggle).toHaveValue(`0`);
await toggle.tap();
toggle = element(by.id(`FirstToggle`));
await expect(toggle).toHaveValue(`1`);
问题是,现在我的测试在执行 first 断言未检查切换时失败了!
Failed: [Error: Error: An assertion failed.
Exception with Assertion: {
"Assertion Criteria": "assertWithMatcher:((respondsToSelector(isAccessibilityElement) && isAccessibilityElement) && accessibilityValue('0'))",
"Element Matcher": "((!(kindOfClass('RCTScrollView')) && (respondsToSelector(accessibilityIdentifier) && accessibilityID('FirstToggle'))) || (((kindOfClass('UIView') || respondsToSelector(accessibilityContainer)) && parentThatMatches(kindOfClass('RCTScrollView'))) && ((kindOfClass('UIView') || respondsToSelector(accessibilityContainer)) && parentThatMatches((respondsToSelector(accessibilityIdentifier) && accessibilityID('FirstToggle'))))))"
}
我在做什么错?我已经在进行断言时尝试使用waitFor
,但这似乎并没有改变。
我正在使用Detox 9.0.5。