ari*_*nai 6 node.js express supertest
我使用multer来处理我的 Express 应用程序中的文件上传,并且还使用node-sspi进行ntlm身份验证。
使用curl上传文件时,一切正常。但是当我尝试用超级测试做同样的事情时,它不起作用。
Supertest 确实只适用于身份验证或上传,但我还没有成功地同时使用它们。
工作卷曲命令:curl -u user:pass --ntlm -F upload=@filename http://localhost
超级测试代码不起作用:
request(app)
.post('/upload')
.auth(username, password)
.attach('upload', fileToUpload)
.expect(200)
Run Code Online (Sandbox Code Playgroud)
如果我省略attach
或auth
- 它可以工作(当然我需要在服务器端禁用身份验证,但一般来说我可以上传)
那么,有人知道如何使用超级测试上传带有身份验证的文件吗?
还作为问题发布在supertest 的 GitHub上
我通过确保参数传递给解决了这个问题upload.single(...)
:
router.post('/sessions', upload.single('someFileIdentifier'), function(req, res, next) {
...
}
Run Code Online (Sandbox Code Playgroud)
与我在附加文件时传递给 supertest 的名称相同:
superTestAgent
.post(`/sessions`)
.attach('someFileIdentifier', `${__dirname}/test.csv`)
.end((_err, res) => {
...
})
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!这是一个微妙的问题,带有无用的错误消息:
MulterError: Unexpected field
at wrappedFileFilter (...)
Run Code Online (Sandbox Code Playgroud)
这是文档的链接:https ://visionmedia.github.io/superagent/#multipart-requests
根据您的身份验证中间件的设置方式,您可以使用jest.spyOn
模拟它来自动接受请求:
jest
.spyOn(YourCustomAuthClass, 'requireUserAuth')
.mockImplementation(async (_req, _res, next) => next())
Run Code Online (Sandbox Code Playgroud)
文档jest.spyOn
: https: //jestjs.io/docs/en/jest-object#jestspyonobject-methodname
归档时间: |
|
查看次数: |
1471 次 |
最近记录: |