Node-Jasmine 没有按预期失败

Node-Jasmine not failing when expected

我第一次尝试设置 node-jasmine 测试。目前我只是想设置一个简单的测试来查看获取索引 returns 状态 200.

它似乎在工作,但我注意到无论我将状态编号更改为什么,它都不会失败,例如期望状态 666,但我没有失败:

const request = require("request")
const helloWorld = require("../app.js")
const base_url = "http://localhost:3002/"

describe("Return the index page", function() {
  describe("GET /", function() {
    it("returns status code 200", function() {
      request.get(base_url, function(error, response, body) {
        expect(response.statusCode).toBe(666)
        done()
      })  
    })  
  })  
})

哪个returns:

Finished in 0.009 seconds
1 test, 0 assertions, 0 failures, 0 skipped

当我预料到这里会失败时。

您需要将 done 回调作为测试函数的参数。

例如:

it("returns status code 200", function(done) {
  request.get(base_url, function(error, response, body) {
    expect(response.statusCode).toBe(666)
    done();
  })  
}) 

如果没有这个,测试将在异步请求之前完成 returns。

虽然看起来您找到了答案,但我也遇到了类似的问题。我的问题是请求失败了,并且从未达到断言。一旦我添加了如下所示的错误捕获,我就发现了我的问题!

我是 Jasmine 的新手,但奇怪的是您的测试中生成的异常不会更明显或更明显,所以如果有人对如何更好地处理有反馈,请告诉我。

const request = require("request")
const helloWorld = require("../app.js")
const base_url = "http://localhost:3002/"

describe("Return the index page", function() {
  describe("GET /", function() {
    it("returns status code 200", function() {
      request.get(base_url, function(error, response, body) {
        if (error)
          console.log("Something borked: ", error);

        expect(response.statusCode).toBe(666)
        done()
      })  
    })  
  })  
})