javascript - 在 node.js 中断言值

标签 javascript node.js assert

我有一个函数,

Edit1 - 用真正的功能更新了功能,因为之前的功能是简化的同步功能,代码会像@AlexMA 在评论中指出的那样正确工作

'returnSuccessOrFailure': function () {
            return driver.findElement(wd.By.css('div#button')).then(function (button) {
                return button.getAttribute('class').then(function (status) {
                    return status;
                });
            });
        }

在我的 node.js 测试中,我的断言失败了,因为在 returnSuccessOrFailure 完成执行之前调用了断言。

var value = returnSuccessOrFailure();
assert.equal(value,'success', 'Looks like something failed');

如果我在 returnSuccessOrFailure 中实现一个 promise 并链接我的断言,那么就可以了。我的问题是,在这种情况下,我是否必须一直执行 promise 才能阻止执行?我是 Javascript 的新手,它的异步性质以及何时使用 promise 和何时不使用的任何见解都会很有用。

最佳答案

你不必在其中“实现一个 promise ”,只需返回你已经拥有的那个:

returnSuccessOrFailure': function () {
            return driver.findElement(wd.By.css('div#button')).then(function (button) {
                ...

但是,是的,您仍然需要将断言放入done 处理程序

returnSuccessOrFailure().done(function(value) {
  assert.equal(value,'success', 'Looks like something failed');
}

关于javascript - 在 node.js 中断言值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25747109/

相关文章:

java - JUnit - 测试创建的最大对象数

python - 断言除了一个键之外两个字典都相等

javascript - 有没有办法为所有元素添加类

javascript - Angular ng-if 和改变 Twitter Bootstrap col-sm

Javascript 函数未链接到下一个函数

javascript - 大 for 循环挂起 javascript 引擎

javascript - 如何通过更改 window.location 来防止页面刷新

node.js - 从 Node express 路线执行 Electron package 机

javascript - 带有 $http.post 的 Angular js 和 Node js 问题

java - 我们可以在 testNG 中处理 try 和 catch 中的断言失败吗