【问题标题】:Node sinon stub a chained function节点 sinon 存根链式函数
【发布时间】:2016-04-07 13:35:22
【问题描述】:

所以我有一段代码:

General.helpers.elementContains = function(selector, value) {
return driver.findElement(webdriver.By.css(selector)).getInnerHtml().then(function(contents) {
  assert.equal(contents, value);
});

};

我想删除 getInnerHtml 函数。我目前已经删除了 driver.findElement 和 webdriver.By.css 函数。我的 driver.findElement 函数返回一个我使用节点模块 sinon-stub-promise 的承诺。

sinon.stub(driver, 'findElement').returnsPromise();
sinon.stub(webdriver.By, 'css');

但是在运行测试时,由于我不确定如何存根 .getInnerHtml 函数,我得到一个错误:

driver.findElement(...).getInnerHtml is not a function

我尝试更改 driver.findElement 以返回一个 getInnerHtml 方法,该方法被存根并返回一个值,但我似乎无法破解这个方法。

sinon.stub(driver.findElement).returns({getInnerHtml: sinon.stub().returns(value)})

任何帮助将不胜感激。

【问题讨论】:

    标签: unit-testing mocha.js sinon


    【解决方案1】:

    我已经找到了解决这个问题的方法:

    存根承诺

    promise = sinon.stub().returnsPromise();
    sinon.stub(driver, 'findElement').returns({getInnerHtml: promise});
    

    这对我有用,因为 getInnerHtml 返回一个承诺,而 driver.findElement 返回一个带有 getInnerHtml 的对象,其中是一个返回承诺的函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-02
      • 2020-03-29
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      • 2021-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多