Jos*_*nus 0 reactjs material-ui cypress
我使用这里的滑块: https: //material-ui.com/components/slider/
尝试将其值设置为:
cy.get("[data-cy=slider-population]")
.as("range")
.invoke("val", val)
.trigger("change");
Run Code Online (Sandbox Code Playgroud)
然而它没有动。有人设法让这个工作吗?
为了让未来的观众更简单,@kevin 的答案将您带到所有正确的位置来提取工作测试,但是这里是没有演示代码的所有内容:
<Slider data-cy="slider-population" />
Run Code Online (Sandbox Code Playgroud)
首先,您需要添加此命令:
Cypress.Commands.add("reactComponent", {
prevSubject: "element"
}, ($el) => {
if ($el.length !== 1) {
throw new Error(`cy.component() requires element of length 1 but got ${$el.length}`);
}
// Query for key starting with __reactInternalInstance$ for React v16.x
const key = Object.keys($el.get(0)).find((key) => key.startsWith("__reactFiber$"));
const domFiber = $el.prop(key);
Cypress.log({
name: "component",
consoleProps() {
return {
component: domFiber,
};
},
});
return domFiber.return;
});
Run Code Online (Sandbox Code Playgroud)
然后在您的测试中,如果您想将最小值设置为 0,将最大值设置为 15:
cy.get('[data-cy="slider-population"]')
.reactComponent()
.its("memoizedProps")
.invoke("onChange", null, [0, 15]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1546 次 |
| 最近记录: |