Node.js 使用摩卡和supertest的铁路超高测试删除方法
我正在尝试为节点应用程序构建一个RESTful API。 我修建了路线,一切都很顺利。但是当我尝试测试它时,它无法让DELETE方法工作,尽管它在未测试的情况下正常工作 以下是服务器和测试的代码。 服务器: 测试: 这是它抛出的错误消息: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
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);
})
});