节点sinon stub是一个链式函数

时间:2016-01-03 23:09:09

标签: unit-testing mocha sinon

所以我有一段代码:

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方法,该方法是stubbed并返回一个值,但我似乎无法破解这个。

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

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

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

存根承诺

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

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