mocha 如何对Promise进行测试

做两个如下的测试,来对Promise进行测试,然而却得不到想要的效果
代码如下

var assert = require('assert');
describe('test', function() {

    describe("promise", function() {
        it("promise test", function() {

            Promise.resolve("OK").then(function(value) {
                assert.equal(value, "!dsadfasdfOKx"); //这里明显是应该直接抛出断言错误
            }, function(err) {
                assert.ok(!err);
            });

        });


       //  这个我按照mocha的官方对Promise 的测试说明http://mochajs.org/#working-with-promises 
       // 然而却抛出TypeError: Cannot read property 'eventually' of undefined的错误
        it("promise test2", function() {

            return Promise.resolve("OK").should.eventually.equal("OK");

        });
    })
});

求解。
究竟 对于Promise的测试 该如何写?

阅读 2.6k
评论 2016-03-25 提问
    1 个回答
    mcfog
    • 21.8k

    官网写的已经非常非常清楚了啊

    Alternately, instead of using the done() callback, you may return a Promise. This is useful if the APIs you are testing return promises instead of taking callbacks

    对应你的第一个case,应当 return a Promise

            it("promise test", function() {
    
                return Promise.resolve("OK").then(function(value) {
                    assert.equal(value, "!dsadfasdfOKx"); //这里明显是应该直接抛出断言错误
                }, function(err) {
                    assert.ok(!err);
                });
    
            });

    下面那句话

    (The latter example uses Chai as Promised for fluent promise assertions.)

    对应你后面的抄官方的case,依赖Chai as Promised

    评论 赞赏
      撰写回答

      登录后参与交流、获取后续更新提醒