javascript - 如何连续运行 mocha 集成测试?

标签 javascript node.js ecmascript-6 es6-promise

我想像集成测试一样测试两个或多个 Promise,它们应该按顺序运行。示例显然是错误的,因为我作为用户仅从之前的测试(电子邮件)中获取了属性。

请注意,我在这里使用 chai-as-promised,但如果有更简单的解决方案,我就不必这样做。

userStore 返回一个 promise ,如果它在其他测试中只是一行代码而没有问题,我可以解决它。

    it.only('find a user and update him',()=>{
    let user=userStore.find('testUser1');

    return user.should.eventually.have.property('email','testUser1@email.com')
        .then((user)=>{
            user.location='austin,texas,usa';
            userStore.save(user).should.eventually.have.property('location','austin,texas,usa');
        });

});

如果我使用 return Promise.all 那么它不能保证按顺序运行,对吗?

最佳答案

在链接 Promise 时,您必须确保始终返回来自每个函数的 Promise,包括 .then() 回调。对于您的情况:

it.only('find a user and update him', () => {
    let user = userStore.find('testUser1');
    let savedUser = user.then((u) => {
        u.location = 'austin,texas,usa';
        return userStore.save(u);
//      ^^^^^^
    });
    return Promise.all([
        user.should.eventually.have.property('email', 'testUser1@email.com'),
        savedUser.should.eventually.have.property('location', 'austin,texas,usa')
    ]);
});

关于javascript - 如何连续运行 mocha 集成测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32289130/

相关文章:

javascript - Javascript 中的循环进度指示器

ecmascript-6 - jspm 不会将代码从 ES6 转换为 ES5

javascript - 在 ES6 中导入用于服务端渲染的组件

javascript - WebSQL 和 Javascript 的操作顺序

Javascript 比较运算符/数字转换不起作用

javascript - 如何动态地将CSS媒体类型添加到页面

Node.js docker 容器未更新以适应卷的变化

node.js - Windows 上的 node-gyp 出现问题 : configure error

javascript - 使用 redux 进行服务端渲染

javascript - 如何合并ES6类源文件?