当前位置: 首页 > 面试题库 >

如何在Mocha中对文件上传进行单元测试

汤承允
2023-03-14
问题内容

我有一个基于Express.js构建的应用程序,我想测试文件上传功能。我正在尝试重现解析为req.files的对象(使用express.bodyParser中间件时)。我怎样才能做到这一点?


问题答案:

您可以直接在Mocha中执行此操作,但这有点棘手。这是发布图像的示例:

var filename = 'x.png'
  , boundary = Math.random()

request(app)
  .post('/g/' + myDraftGallery._id)
  .set('Content-Type', 'multipart/form-data; boundary=' + boundary)
  .write('--' + boundary + '\r\n')
  .write('Content-Disposition: form-data; name="image"; filename="'+filename+'"\r\n')
  .write('Content-Type: image/png\r\n')
  .write('\r\n')
  .write(fs.readFileSync('test/'+filename))
  .write('\r\n--' + boundary + '--')
  .end(function(res){
    res.should.have.status(200)
    done()
  })

Content-Disposition 的 name
参数是通过req.files(以req.files.image为例)可访问文件的内容。您还可以使用如下数组值:name =“ images
[]”和文件(s)将通过数组提供,例如:req.files.images [0]

另外,如果您还没有使用过它,那么应该看看一下(使mocha /
express测试〜bit〜更加容易): https
//github.com/visionmedia/express/blob/master/test/support/http
.js

编辑 :由于express
3-beta5,express使用supertest。要查看旧的http.js代码,请点击此处:https
:
//github.com/visionmedia/express/blob/3.0.0beta4/test/support/http.js
或直接移至超级测试。



 类似资料:
  • 问题内容: 在我的django应用程序中,我有一个完成文件上传的视图。核心代码段是这样的 我想对视图进行单元测试。我正计划测试快乐路径和失败路径。即,没有键“ file”的情况,有键“。”的情况。 如何设置幸福道路的发车数据?有人可以告诉我吗? 问题答案: 来自Django文档: 提交文件是一种特殊情况。要发布文件,只需提供文件字段名称作为键,并提供要上传的文件的文件句柄作为值。例如:

  • 问题内容: 如何在单元测试中测试 hashCode()函数? 问题答案: 每当我覆盖equals和hash代码时,我都会按照Joshua Bloch在“ Effective Java”第3章中的建议编写单元测试。我确保equals和hash代码是自反的,对称的和可传递的。我还确保“不等于”对所有数据成员均正常工作。 当我检查对equals的调用时,我还要确保hashCode的行为符合预期。像这样:

  • 问题内容: 我一直在学习AngularJS,并且在单元测试方面进展非常顺利,但是我遇到了一个棘手的问题。 假设我有一个简单的表格,例如: 如果我正在测试类似控制器的东西,我知道我会这样写(使用Jasmine + Karma): 但是我不知道我需要注入哪些服务,也没有运气在指南或文档中找到有关单元测试的文档。 一个单元如何在Angular中测试表单? 问题答案: 我不认为这是对此类内容进行单元测试的

  • 问题内容: 我正在使用Mocha以便对为node.js编写的应用程序进行单元测试 我想知道是否可以对模块中未导出的功能进行单元测试。 例: 我在其中定义了很多功能 以及一些作为公共导出的功能: 测试用例的结构如下: 显然,这是行不通的,因为没有导出。 对私有方法进行单元测试的正确方法是什么?摩卡咖啡有内置的方法吗? 问题答案: 如果模块未导出功能,则模块外部的测试代码无法调用该功能。那是由于Jav

  • 本文向大家介绍对Angular.js Controller如何进行单元测试,包括了对Angular.js Controller如何进行单元测试的使用技巧和注意事项,需要的朋友参考一下 一、写个简单的Angular App 在开始写测试之前,我们先写一个简单的计算App,它会计算两个数字之和。 代码如下: 二、简单说说里面涉及的一些基本概念: 创建一个 module 什么是angular.modul

  • 问题内容: 如您所知,异常情况下会引发异常。那么如何模拟这些异常呢?我觉得这是挑战。对于此类代码段: 有人有好主意吗? 问题答案: 其他答案已经解决了如何编写用于检查是否引发异常的单元测试的一般问题。但是我认为您的问题实际上是在询问如何获取代码以首先引发异常。 以您的代码为例。在简单的单元测试的环境中,很难在内部引发异常。问题是,为了使异常发生,代码(通常)需要在网络中断的计算机上运行。安排在单元