如何在Cypress中编写自定义命令?

如何在Cypress中编写自定义命令?,cypress,Cypress,我正试图在Cypress中实现一个悬停命令,所以我要这样做: Cypress.Commands.add("hover", { prevSubject: "element" }, (subject) => { return subject.trigger("mouseenter"); }); 然后像这样使用它: cy.get(`[test-id="my-test-id"]`).hover(); 但是它

我正试图在Cypress中实现一个
悬停
命令,所以我要这样做:

Cypress.Commands.add("hover", { prevSubject: "element" }, (subject) => {
    return subject.trigger("mouseenter");
});
然后像这样使用它:

cy.get(`[test-id="my-test-id"]`).hover();
但是它不起作用:
hover
调用似乎对测试的执行没有任何影响

如果我删除自定义命令并将该函数的内容内联,则它可以工作:

cy.get(`[test-id="my-test-id"]`).trigger("mouseenter");

自定义命令有什么问题吗?

您是否尝试过先包装主题

cy.wrap(subject).trigger("mouseenter");

你说的“不工作”具体是什么意思?啊,很抱歉,当然:对于“不工作”,我的意思是我看不到使用
cy.get(…).hover()
vs.删除行的任何效果。好像方法调用不在那里。谢谢!包装主题使自定义命令起作用。请注意,这并不是起作用的
mouseover
,而是
mouseenter
。为什么在这种情况下需要包装?
mouseover
是我的打字错误,对不起。至于原因:我对很多东西都不熟悉,但我的印象是传入的对象是不可链接的,或者更确切地说,它不会提供收益
cy.wrap
使其为链下游的函数提供收益。