Node.js 使用摩卡和supertest的铁路超高测试删除方法

Node.js 使用摩卡和supertest的铁路超高测试删除方法,node.js,rest,mocha.js,supertest,Node.js,Rest,Mocha.js,Supertest,我正在尝试为节点应用程序构建一个RESTful API。 我修建了路线,一切都很顺利。但是当我尝试测试它时,它无法让DELETE方法工作,尽管它在未测试的情况下正常工作 以下是服务器和测试的代码。 服务器: 测试: 这是它抛出的错误消息: Routing 1) should return status 200 after DELETING a bus ✖ 1 of 1 test failed: 1) Routing should return status 200 afte

我正在尝试为节点应用程序构建一个RESTful API。 我修建了路线,一切都很顺利。但是当我尝试测试它时,它无法让DELETE方法工作,尽管它在未测试的情况下正常工作

以下是服务器和测试的代码。 服务器:

测试:

这是它抛出的错误消息:

Routing
    1) should return status 200 after DELETING a bus


  ✖ 1 of 1 test failed:

  1) Routing should return status 200 after DELETING a bus:
     TypeError: Object #<Object> has no method 'delete'
      at Context.<anonymous> (/home/roger/Documents/Buse/test/test.js:63:16)
      at Test.Runnable.run (/home/roger/Documents/Buse/node_modules/mocha/lib/runnable.js:196:15)
      at Runner.runTest (/home/roger/Documents/Buse/node_modules/mocha/lib/runner.js:351:10)
      at /home/roger/Documents/Buse/node_modules/mocha/lib/runner.js:397:12
      at next (/home/roger/Documents/Buse/node_modules/mocha/lib/runner.js:277:14)
      at /home/roger/Documents/Buse/node_modules/mocha/lib/runner.js:286:7
      at next (/home/roger/Documents/Buse/node_modules/mocha/lib/runner.js:234:23)
      at Object._onImmediate (/home/roger/Documents/Buse/node_modules/mocha/lib/runner.js:254:5)
      at processImmediate [as _immediateCallback] (timers.js:330:15)


make: *** [test] Error 1
路由
1) 删除总线后应返回状态200
✖ 1次测试中有1次失败:
1) 删除总线后,路由应返回状态200:
TypeError:对象#没有方法“delete”
在上下文中。(/home/roger/Documents/Buse/test/test.js:63:16)
在Test.Runnable.run(/home/roger/Documents/Buse/node_modules/mocha/lib/Runnable.js:196:15)
在Runner.runTest(/home/roger/Documents/Buse/node_modules/mocha/lib/Runner.js:351:10)
at/home/roger/Documents/Buse/node_modules/mocha/lib/runner.js:397:12
下一步(/home/roger/Documents/Buse/node_modules/mocha/lib/runner.js:277:14)
at/home/roger/Documents/Buse/node_modules/mocha/lib/runner.js:286:7
下一步(/home/roger/Documents/Buse/node_modules/mocha/lib/runner.js:234:23)
at Object._onImmediate(/home/roger/Documents/Buse/node_modules/mocha/lib/runner.js:254:5)
在processImmediate[as_immediateCallback](timers.js:330:15)
make:**[测试]错误1
看一看

您可以将
http.Server
函数
传递给
request()

您正在向函数请求传递字符串。尝试将express server对象作为函数参数传递


编辑:如注释和@mpm:s的回答中所示,问题是使用了保留函数
delete()
,而不是包特定函数
del()

需要明确的是,supertest没有删除方法,但正确的方法是del

因此,应该像这样测试删除请求:

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

//with mocha for instance.
describe('test delete',function(){
  it('should respond 200',function(done){
    request(app).del('/path').expect(200).end(done);
  })
});

你需要传递应用程序(express app),而不是url或字符串。

谢谢你的回复。但是我没有明白。尝试像此请求(服务器)那样执行此操作,但收到相同的错误。这并不是我唯一的测试,还有其他人使用post,并以完全相同的方式获得,但他们确实通过了。我只是在回到这里之前尝试了一下,并且成功了!无论如何,我非常喜欢坦斯克。这一次我花了很多时间才弄明白:再次感谢!请注意,和旧别名
del()
Routing
    1) should return status 200 after DELETING a bus


  ✖ 1 of 1 test failed:

  1) Routing should return status 200 after DELETING a bus:
     TypeError: Object #<Object> has no method 'delete'
      at Context.<anonymous> (/home/roger/Documents/Buse/test/test.js:63:16)
      at Test.Runnable.run (/home/roger/Documents/Buse/node_modules/mocha/lib/runnable.js:196:15)
      at Runner.runTest (/home/roger/Documents/Buse/node_modules/mocha/lib/runner.js:351:10)
      at /home/roger/Documents/Buse/node_modules/mocha/lib/runner.js:397:12
      at next (/home/roger/Documents/Buse/node_modules/mocha/lib/runner.js:277:14)
      at /home/roger/Documents/Buse/node_modules/mocha/lib/runner.js:286:7
      at next (/home/roger/Documents/Buse/node_modules/mocha/lib/runner.js:234:23)
      at Object._onImmediate (/home/roger/Documents/Buse/node_modules/mocha/lib/runner.js:254:5)
      at processImmediate [as _immediateCallback] (timers.js:330:15)


make: *** [test] Error 1
var app=require('./app')
var request=require('supertest')

//with mocha for instance.
describe('test delete',function(){
  it('should respond 200',function(done){
    request(app).del('/path').expect(200).end(done);
  })
});