我正在编写一个测试,看看我的代码是否通过查看屏幕上保存级别计数的文本值来删除级别。
it 'allows deleting level versions', ->
browser.get('/api#/costings')
element(By.id("edit")).click()
startCount = element(By.id("versions_count")).getText().then( (count) ->
return count
)
element(By.id("versions")).click()
first=element.all(By.id("listing")).first()
first.element(By.id("delete")).click()
helper.accept_dialog()
element(By.id("back")).click()
expect(element(By.id("versions_count")).getText()).toEqual(startCount - 1)
这里的问题是函数中的 startCount 结果。我似乎无法将 startCount 转换为整数,以便我可以查看计数是否减少了 1 项。
它给了我错误;
1) edit an existing costing allows deleting level versions
Message:
Expected '1' to equal NaN.
如果我尝试 parseInt(startCount) 我会得到同样的错误。
最佳答案
变量 startCount
是一个 Promise,因此 startCount - 1
没有意义:没有从 Promise 到其解析值的自动类型转换,因此你不能从中减去一。
您可以做的是创建一个 promise ,其解析值是预期的版本计数:
expectedCount = element(By.id("versions_count")).getText().then( (count) ->
return (count - 1).toString();
)
然后您可以将此 Promise 传递给 toEqual
,因为它会在控制流中的适当位置自动解开 Promise
expect(element(By.id("versions_count")).getText()).toEqual(expectedCount)
关于angularjs - Protractor 从 Promise 返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31780731/