如何在发送令牌的情况下测试文件上传?我回来了" 0"而不是确认上传。
这是一项失败的测试:
-Xfatal-warnings
这是一项工作测试:
var chai = require('chai');
var expect = chai.expect;
var config = require("../config"); // contains call to supertest and token info
describe('Upload Endpoint', function (){
it('Attach photos - should return 200 response & accepted text', function (done){
this.timeout(15000);
setTimeout(done, 15000);
config.api.post('/customer/upload')
.set('Accept', 'application.json')
.send({"token": config.token})
.field('vehicle_vin', "randomVIN")
.attach('file', '/Users/moi/Desktop/unit_test_extravaganza/hardwork.jpg')
.end(function(err, res) {
expect(res.body.ok).to.equal(true);
expect(res.body.result[0].web_link).to.exist;
done();
});
});
});
任何建议都表示赞赏!
答案 0 :(得分:4)
使用超级测试4.0.2,我能够set
令牌和attach
文件:
import * as request from 'supertest';
return request(server)
.post('/route')
.set('Authorization', 'bearer ' + token)
.attach('name', 'file/path/name.txt');
更好的是,根据docs,您可以创建一个Buffer对象来附加:
const buffer = Buffer.from('some data');
return request(server)
.post('/route')
.set('Authorization', 'bearer ' + token)
.attach('name', buffer, 'custom_file_name.txt');
答案 1 :(得分:1)
附加文件时似乎覆盖了令牌字段。我的解决方法是将令牌添加到URL查询参数:
@foreach($subcategory as $subcategories)
<tr>
<td><a href="#"> Edit </a></td>
<td> {{ $subcategories->subcategory_name }} </td>
<td> {{ $subcategories->category_id}} </td>
</tr>
@endforeach
您的身份验证中间件必须设置为从URL查询参数中提取JWT。 Passport-JWT在我的服务器上执行此提取。
答案 2 :(得分:0)
官方文件说明
使用.field()或.attach()时,不能使用.send(),并且不得设置Content-Type(将为您设置正确的类型)。
所以更换
.send({"token": config.token})
与
.field("token", config.token)