Uncaught AssertionError: ожидается, что 404 будет равно 405 - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь проверить работающий сервер.Что мне нужно сделать, это выполнить тестирование мокко на ответ, который дает сервер.Я очень новичок в этом, поэтому, пожалуйста, прости любые ошибки, которые были сделаны.

Тест считается успешным, но это не так.Я очень новичок в этом, поэтому я не пробовал никаких альтернативных решений.Спасибо.

В Index.js у меня есть:

console.log('index.js executing!');

var express = require('express');
var app = express();

app.get('/', function(req,res) {
res.send('Hello, World!');
});

app.get('/', function(req,res){
res.send('status.METHOD_NOT_ALLOWED');
});

var port = 3000;
app.listen(port,function() {
    console.log('Listening on port ' + port);
});

И я тестирую его с помощью мокко:

console.log('test/test.js executing');

const chai = require('chai');
const expect = chai.expect;
const request = require('superagent');
const status = require('http-status');

const apiRoot = 'http://localhost:3000/';

describe('hello API', function(){
it('GET request returns text "Hello, World!".',function(done){
request.get(apiRoot)
    .end(function(err,res){
      expect(err).to.not.be.an('error');
      expect(res.statusCode).to.equal(status.OK);
      expect(res.text).to.equal('Hello, World!');
   done();
   });
});


it('POST request is not allowed',function(done){
 request.post(apiRoot)
   .end(function(err,res){
     expect(err).to.be.an('error');
     expect(res.statusCode).to.equal(status.METHOD_NOT_ALLOWED);
  done();
  });
 });
});

Ожидается, что тест пройден.

Фактический результат, который я получаю:

Uncaught AssertionError: expected 404 to equal 405
      + expected - actual

      -404
      +405

      at /home/plc/cs2410/test/test.js:26:27
      at Request.callback (node_modules/superagent/lib/node/index.js:826:3)
      at IncomingMessage.parser (node_modules/superagent/lib/node/index.js:1036:18)
      at endReadableNT (_stream_readable.js:1129:12)
      at processTicksAndRejections (internal/process/next_tick.js:76:17)

Строки 26 и 27:

expect(res.statusCode).to.equal(status.METHOD_NOT_ALLOWED);
done();

1 Ответ

0 голосов
/ 06 февраля 2019

Вы получаете 404, потому что ваш сервер Express не ожидает POST для этой конечной точки.Если вы посмотрите, вы определили два GET s для этой конечной точки.Вы также отвечаете на второй запрос строкой, которая говорит status.METHOD_NOT_ALLOWED, а не фактический код состояния 405.Вам нужно изменить свой второй app.get на что-то вроде этого:

app.post('/', function(req,res){
  res.send(405, 'Method Not Allowed');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...