Node-Jasmine在预期时没有失败

时间:2016-12-19 12:06:16

标签: node.js unit-testing express jasmine jasmine-node

我第一次尝试设置node-jasmine测试。目前我只是尝试设置一个简单的测试,看看索引返回状态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()
      })  
    })  
  })  
})

返回:

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

当我预料到失败时。

2 个答案:

答案 0 :(得分:1)

您需要将done回调作为参数包含在测试函数中。

例如:

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

如果没有这个,测试在异步请求返回之前就完成了。

答案 1 :(得分:0)

虽然看起来你找到了答案,但我带着类似的问题来到这里。我的问题是请求失败,并且从未达到过断言。一旦我添加了如下的错误捕获,我发现了我的问题!

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

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()
      })  
    })  
  })  
})