首页 > 解决方案 > 间谍没有检测到函数调用 sinonjs

问题描述

对于网站测试,我使用赛普拉斯。我有一些自定义事件,我使用 cy.spy。第一次它工作正常,但是如果我在第一次之后直接第二次运行该函数,它总是说“预期的”测试“已经用参数“测试”被调用,但它从未被调用“。我也尝试过等待,但这并没有改变。

Cypress.Commands.add('waitForEvent', (event, absoluteSelector, expectedURL) => {
      cy.window().then((win) => {
          const spyFuncName = expectedURL,
              spyObj = {},
              eventCallback = function(e) {
                  win.removeEvent(event, win.document, eventCallback);
                  console.log("WANTED", e.data.url);
                  spyObj[spyFuncName](e.data.url);
              }
  
              spyObj[spyFuncName] = function(eventUrl) {
                  console.log("WANTED", "Spy: " + eventUrl);
              }
          
          cy.spy(spyObj, spyFuncName);
          win.addEvent(event, win.document, eventCallback);
    
          cy.get(absoluteSelector)
            .click()
            .then(() => {
                expect(spyObj[spyFuncName]).to.be.calledWith(expectedURL);
          });
      });
  })

赛普拉斯版本:7.6.0

标签: javascriptcypresssinon

解决方案


推荐阅读