我正在测试我正在运行的服务器。我需要做的是对服务器给出的响应执行摩卡测试。我对此很陌生,因此请原谅任何错误。
应该通过测试,但是没有通过。我对此很陌生,因此我没有尝试任何替代解决方案。谢谢。
在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();
答案 0 :(得分:1)
您收到404,因为您的Express服务器未在监听该端点的POST
。如果您看过,您已经为该端点定义了两个GET
。您还使用第二个字符串status.METHOD_NOT_ALLOWED
来响应第二个请求,而不是实际的405状态代码。您需要将第二个app.get
更改为以下内容:
app.post('/', function(req,res){
res.send(405, 'Method Not Allowed');
});