node.js - 有没有办法用 Jasmine NodeJS 发送 JPG?

标签 node.js jasmine frisby.js

我正在尝试使用 FrisbyJS(位于用于 Node 的 Jasmine 之上)来测试我的 API。我想知道是否有人知道如何使用 Jasmine 提交/发送图像?

http://frisbyjs.com/

我当前的代码是...

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 .)。

最佳答案

我根据 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()

关于node.js - 有没有办法用 Jasmine NodeJS 发送 JPG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14150543/

相关文章:

node.js - 使用Protractor+jasmine进行API测试

javascript - 对参数和其他对象进行切片

javascript - 如何在 javascript 单元测试中模拟数据?

javascript - 在meteor-jasmine中测试router.go的点击事件

node.js - 开 Jest 不等待所有分辨率开始测试

node.js - 如何从服务器端(使用 NodeJS sdk)将设备注册到 Azure 通知中心?

node.js - 使 babel 排除测试文件

javascript - 可以在 webpack.config.js 中链接 Node 模块文件吗?

testing - 在控制台中使用 Jasmine 2 和 Protractor 3.0.0 进行规范名称和测试