首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Nodejs中使用Jasmine测试承诺是否被解决或拒绝

在Nodejs中使用Jasmine测试承诺是否被解决或拒绝
EN

Stack Overflow用户
提问于 2014-11-27 14:31:19
回答 4查看 44.5K关注 0票数 39

我知道如何在Mocha中做到这一点,但想知道如何与茉莉。我试过了

代码语言:javascript
复制
describe('test promise with jasmine', function() {
    it('expects a rejected promise', function() {
        var promise = getRejectedPromise();

        // return expect(promise).toBe('rejected');
        return expect(promise.inspect().state).toBe('rejected');
    });
});

但是,状态始终为pending,当然,测试会失败。我在网上找不到任何我可以让它工作的例子。

有没有人能帮我一下?

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-11-27 15:19:03

要使用jasmine测试异步代码,您应该使用its async syntax,例如:

代码语言:javascript
复制
describe('test promise with jasmine', function(done) {
    var promise = getRejectedPromise();

    promise.then(function() {
      // Promise is resolved
      done(new Error('Promise should not be resolved'));
    }, function(reason) {
      // Promise is rejected
      // You could check rejection reason if you want to
      done(); // Success
    });
});
票数 46
EN

Stack Overflow用户

发布于 2019-04-24 12:33:26

现在可以使用expectAsync()

期待成功:

代码语言:javascript
复制
it('expect result', async () => {
   ...
   await expectAsync(someAsyncFunction(goodInput)).toBeResolved(expectedResponse)
})

预期失败:

代码语言:javascript
复制
it('expect result', async () => {
   ...
   await expectAsync(someAsyncFunction(badInput)).toBeRejectedWith(expectedResponse)
})
票数 44
EN

Stack Overflow用户

发布于 2016-05-15 01:26:18

您可以使用finally块来测试promise状态:

代码语言:javascript
复制
it('should resolve if auth succeed', (done)=>{
    var p = server.login('user', 'password');
    p.finally(()=>{
        expect(p.isFulfilled()).toBeTruthy();
        done();
    });
});

您可以使用isFulfilled检查promise是否已履行,并使用value方法检查fulfillment值。相应的拒绝方法有isRejectedreason

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27164404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档