作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Controller ,它接收一个文件作为参数的一部分。我想知道如何测试这个?
我的 Controller Action :
def save () {
def colorInstance = new Color(params.color)
CommonsMultipartFile file = request.getFile('color.filename')
fileUploadService.upload(colorInstance, file, "foldername")
if (requestInstance.save(flush: true)) {
withFormat {
html {redirect(action: "list") }
js {render "test"}
}
}
}
我从这样的事情开始:...
import org.junit.Before
import grails.test.mixin.Mock
import grails.test.mixin.TestFor
@TestFor(ColorController)
@Mock(Color)
class ColorControllerTests {
@Before
void setUp() {
controller.fileUploadService = new FileUploadService
}
}
问题
CommonsMultipartFile
。unit
测试文件夹中。我该如何执行?最佳答案
我使用的是 Grails 2.4,您可以在单元测试中简单地使用 GrailsMockMultipartFile
和 request.addFile
方法。
此代码适用于 Grails 2.4.4,带有 Spock 测试框架:
Controller 端:
class FileUploadController {
def upload() {
def multipartFile = request.getFile('requestParamName')
if (multipartFile.empty) {
flash.message = 'Error: file cannot be empty'
render(view: 'upload')
return
}
// do something now with your file
}
}
单元测试方面:
import grails.test.mixin.TestFor
import org.codehaus.groovy.grails.plugins.testing.GrailsMockMultipartFile
import spock.lang.Specification
@TestFor(FileUploadController)
class FileUploadControllerSpec extends Specification {
void "upload should add flash error message if empty file in request"() {
given:
def multipartFile = new GrailsMockMultipartFile('requestParamName', 'someExcelFile.xls', 'application/vnd.ms-excel', new byte[0])
request.addFile(multipartFile)
when:
controller.upload()
then:
assertEquals('Error: file cannot be empty', flash.message)
}
}
关于unit-testing - 如何在 Grails 中测试文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16508836/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!