Есть ли способ отправить JPG с Jasmine NodeJS?
Я пытаюсь проверить мой API с помощью FrisbyJS (который находится поверх Jasmine для Node). Мне было интересно, если кто-нибудь знает, как отправить / отправить изображение с помощью Жасмин?
Мой текущий код...
var frisby = require('frisby');
var URL = 'http://localhost/api';
frisby.globalSetup({
request: {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json',
'api': 'key'
}
},
timeout: (30 * 1000)
});
frisby.create('submit an image')
.post(URL + 'image', {images: '@test.jpg'}, {method: 'POST'})
.expectStatus(200)
.afterJSON(function(cart){
console.log('made it!');
})
}).toss();
И я получаю следующую ошибку:
1) Frisby Test: submit an image
[ POST http://localhost/api ]
Message:
timeout: timed out after 30000 msec waiting for HTTP Request timed out before completing
Stacktrace:
undefined
Finished in 31.458 seconds
И да, образ test.jpg существует в той же папке:), что и файл спецификации, и где я выполняю саму спецификацию (jasmine-node .).
1 ответ
Я нашел решение на основе примера, приведенного по адресу https://github.com/vlucas/frisby/blob/master/examples/httpbin_multipart_spec.js
var frisby = require('frisby');
var fs = require('fs');
var path = require('path');
var FormData = require('form-data');
var contentPath = path.resolve(__dirname, './path/to/image.jpg');
var form = new FormData();
form.append('file', fs.createReadStream(contentPath), {
knownLength: fs.statSync(contentPath).size
});
frisby.create('Create content asset')
.post(apiPath + '/assets', form, {
json: false,
headers: {
'content-type': 'multipart/form-data; boundary=' + form.getBoundary(),
'content-length': form.getLengthSync(),
}
})
.expectStatus(201)
.toss()