我已经尝试在我的单元测试中测试重复的表单提交,就像在文档中一样,并且它有效. http://grails.github.io/grails-doc/3.0.x/guide/testing.html#unitTestingControllers
但在我的集成测试中,它始终失败并标记为invalidToken.我用与tokenHolder部分中的单元测试相同的方式编写它.
那么如何在Integration Test中处理有效令牌withForm?
我的集成测试:
@TestFor(RegisterTestedController)
class RegisterTestedControllerIntSpec extends Specification {
void "test insert data register"() {
given:
controller.params.username == 'babaenciel'
controller.params.companyName == 'tamago'
when:
def tokenHolder = SynchronizerTokensHolder.store(session)
params[SynchronizerTokensHolder.TOKEN_URI] = '/registerTested/signUp'
params[SynchronizerTokensHolder.TOKEN_KEY] = tokenHolder.generateToken(params[SynchronizerTokensHolder.TOKEN_URI])
controller.signUp()
then:
controller.modelAndView.model.parameter.username == 'babaenciel'
controller.modelAndView.model.parameter.companyName == 'tamago'
}
}
Run Code Online (Sandbox Code Playgroud)
控制者:
class RegisterTestedController {
def signUp() {
log.info("session: " + session.properties)
log.info("request: " + request.properties)
log.info("params: " + params)
def invalidToken = false
withForm {
invalidToken = false
}.invalidToken {
invalidToken = true
} …Run Code Online (Sandbox Code Playgroud) 我需要显示JSON的空对象{}时,做json.Marshal()了一个结构指针。我只能输出nullvalue或空的struct值。
如果person键用&Person{}或填充new(Person),它将显示空结构,如下所示:
{
"data": {
"person": {
"name": "",
"age": 0
},
"created_date": "2009-11-10T23:00:00Z"
}
}
Run Code Online (Sandbox Code Playgroud)
如果我们根本不初始化它,它将显示null。
{
"data": {
"person": null,
"created_date": "2009-11-10T23:00:00Z"
}
}
Run Code Online (Sandbox Code Playgroud)
我想展示"person": {}。可能吗?
前往Playground获取完整代码:https://play.golang.org/p/tT15G2ESPVc
如何从绝对路径获取文件对象?
对象就像我从那里得到的一样$request->file('fileInput')。
所以我可以使用类似$file->getClientOriginalName()或之$file->getClientOriginalExtension()类的方法。
我只能找到一种使用方法来获取文件对象File::allFiles($absoluteFolderPath)并通过它循环查找具有我要查找的文件名的文件的方法。
但是有更简单的东西吗?