学习摩卡测试与超级。无法进行测试失败

时间:2015-12-30 00:27:42

标签: node.js express mocha supertest

我不知道怎么做,但我不能为我的生活弄清楚如何让这个测试失败。老实说,我真的不知道我在做什么,但看到/fail并不存在,我的所有路线都受到身份验证的保护,导致GET /fail 401测试应该失败,因为它expect(200)。那么这里发生了什么?

var app = require('../../app');
var request = require('supertest');
var agent = request.agent(app);

describe('Index Routes', function(done){
  it('should return 200 status code', function(done){
      agent.get('/').expect(500, done);
  });

  it('should fail horribly', function(done){
    agent.get('/fail').expect(200, done);
  })
});

输出:

> istanbul cover node_modules/mocha/bin/_mocha -x database.js

  Index Routes
[0mGET / [32m200 [0m374.389 ms - 170[0m

    1) should return 200 status code
[0mGET /fail [33m401 [0m1.723 ms - 21[0m

    √ should fail horribly


  1 passing (415ms)
  1 failing

  1) Index Routes should return 200 status code:
     Error: expected 500 "Internal Server Error", got 200 "OK"
      at Test._assertStatus (C:\Users\janedoe\WalkingApp-WebService\node_modules\supertest\lib\test.js:232:12)
      at Test._assertFunction (C:\Users\janedoe\WalkingApp-WebService\node_modules\supertest\lib\test.js:247:11)
      at Test.assert (C:\Users\janedoe\WalkingApp-WebService\node_modules\supertest\lib\test.js:148:18)
      at Server.assert (C:\Users\janedoe\WalkingApp-WebService\node_modules\supertest\lib\test.js:127:12)
      at emitCloseNT (net.js:1521:8)


=============================== Coverage summary ===============================
Statements   : 58.05% ( 101/174 )
Branches     : 6.25% ( 2/32 )
Functions    : 12.9% ( 4/31 )
Lines        : 61.59% ( 101/164 )
================================================================================

2 个答案:

答案 0 :(得分:0)

原来这是我的身份验证问题。只需在res.send().status();的身份验证方法中将res.status().send()的顺序切换为Passport.js

答案 1 :(得分:0)

这是res.status方法的express v4 documentation。 res.status是Node response.statusCode的可链接别名。然后,您可以在此后链接发送功能。

res.status(400).send('Bad Request');