我正在尝试用Mocha / Chai测试我的nodejs API 。我创建了一个“ test”文件夹,其中包含File.js,其中包含以下代码:
let chai = require('chai');
let chaiHttp = require('chai-http');
let fs = require('fs');
let should = chai.should();
chai.use(chaiHttp);
var fileName = 'devJoke.png';
describe('/PUT file', () => {
it('Should PUT a file', (done) => {
let file = {
fileName: "devJoke.png",
}
chai.request('http://localhost:3000')
.put('/bucket/user2/files/')
.set('secret_key', 'user2SecretKey')
.set('Content-Type', 'application/x-www-form-urlencoded')
.field('Content-Type', 'multipart/form-data')
.field('fileName', 'devJoke.png')
.attach('files', "/Users/stagiaire/Downloads/devJoke.png")
.send(file)
.end((err, res) => {
if (err) {
console.log(err)
} else {
res.should.have.status(200);
res.body.should.be.a('object');
res.body.should.have.property('data').eql('File Uploaded')
}
done();
})
}) …Run Code Online (Sandbox Code Playgroud) 我正在尝试将带有POSTMAN的文件上传到此网址
http://localhost:3000/bucket/test/files/
Run Code Online (Sandbox Code Playgroud)
并且应该在我的控制器中得到结果:
put(request, response, args) {
//HERE IN THE REQUEST.BODY
console.log(request.body)
let fileManager = request.modules.VMFile;
let mimeTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/x-icon', ' video/mpeg', 'text/html', 'video/x-msvideo', 'application/msword', 'application/pdf', 'application/vnd.ms-powerpoint', 'application/x-rar-compressed'];
let maxFileSize = 4 * 1024 * 1024;
fileManager.initUpload(mimeTypes, maxFileSize);
fileManager.receive((files) => {
fileManager.forEachFileContent(files, (file, content) => {
minioClient.putObject(request.body.bucket, request.body.name, content, file.size, file.mimetype, function (err, etag) {
response.setData("File uploaded").apply();
return console.log(err, etag)
})
});
fileManager.clearFilesFromTmp(files);
});
}
Run Code Online (Sandbox Code Playgroud)
在POSTMAN我得到了这个:
标题上没有任何东西,但我只能PUT(或POST,我试图用POST更改我的路线但同样的问题)名称和存储区字段..我的文件字段没有任何内容..
有什么好主意吗?
我想检查正确的 ObjectID 以继续我的代码。我在 NodeJS 上,我不想收到错误:
错误:传入的参数必须是 12 个字节的单个字符串或 24 个十六进制字符的字符串
实际上我得到了这些测试:
if (!user.id || !user.id.match("/^[0-9a-fA-f]{24}$") || !typeof(user.id) === 'string') {
console.log("user id is required !")
return callback("user id is required !")
}
Run Code Online (Sandbox Code Playgroud)
对于 24 个十六进制字符的字符串,我得到了这个正则表达式:
!user.id.match("/^[0-9a-fA-f]{24}$")
Run Code Online (Sandbox Code Playgroud)
我正在搜索检查它是否是一个 12 字节的字符串:
!typeof(user.id) === 'string'
Run Code Online (Sandbox Code Playgroud)
我应该如何添加12字节的验证?
有什么想法吗?