3

我正在尝试 Mocha/Chai 的chai-http插件。它围绕着 Superagent。一切似乎都很好,除了我想知道......

我不应该能够进行一次 http 调用并为每个调用编写单独的测试吗?测试似乎希望您在响应函数中编写断言,如下所示:

describe "github test", ->

   it "should connect with a 200 status", ->
     chai.request(githubReqObj.base)
      .get(githubReqObj.url)
      .req (req) ->
         req.set
           'Accept': 'application/vnd.github.beta+json'
         return
      .res (res) ->
         expect(res).to.have.status 200

但是我想运行几个断言,并将它们中的每一个都放在自己的“它”块下。

有没有办法跑

   before ->

然后只是调用我对响应价值的断言?

4

1 回答 1

5

是的,像这样:

describe("github test", function () {
    var res;

    before(function (done) {
        chai.request(...)
            .get(..)
            .req(...)
            .res(function (response) {
                res = response; // Record the response for the tests.
                done(); // Tell mocha that the ``before`` callback is done.
            });
    });

    it("should connect with a 200 status", function () {
        expect(res).to.have.status(200);
    });

    it("should whaterver", function () {
        expect(res).whatever;
    });
});

我注意到您没有done在示例中使用回调。将它用于异步测试非常重要。在我上面显示的代码中,before回调是异步的,但测试本身是同步的。

于 2013-12-08T21:10:22.980 回答