自从我4个月前开始工作以来,我对Grails完全不熟悉并且正在测试它的功能.几个星期前训练我测试的人离开了我们小组,现在我自己进行测试.我已经放缓已经发现的是,我就怎么做的Grails集成测试训练方式几乎是从我见过的人做的论坛和支持团体的方式(一个或多个)完全不同.我真的可以使用哪种方式是正确/最好的.我目前正在使用Grails 2.4.0,顺便说一句.
以下是我接受过培训的样式的集成测试示例模型.这是我应该做的正确甚至是最好的方式吗?
@Test
void "test a method in a controller"() {
def fc = new FooController() // 1. Create controller
fc.springSecurityService = [principal: [username: 'somebody']] // 2. Setup Inputs
fc.params.id = '1122'
fc.create() // 3. Call the method being tested
assertEquals "User Not Found", fc.flash.errorMessage // 4. Make assertions on what was supposed to happen
assertEquals "/", fc.response.redirectUrl
}
Run Code Online (Sandbox Code Playgroud) 我的一块Geb测试遇到了很大困难; 如何从下拉列表中选择一个值.我尝试了四种不同的方式,但这些方法都没有.它会使测试崩溃或直接跳过它.任何帮助,将不胜感激
HTML表单元素(102727是db表中加利福尼亚的id ...)
<div class="col-sm-2">
<label id="submitterState-label" class="toplabel" for=submitterState>State</label>
<g:select name="submitterState" id="submitterState" from="stuff here..." class="form-control" optionKey="id" value="morestuff" noSelection="['null':'']" aria-labelledby="submitterState-label"/>
</div>
Run Code Online (Sandbox Code Playgroud)
产生的HTML:
<div class="col-sm-2">
<label id="submitterState-label" class="toplabel" for=submitterState>State</label>
<select name="submitterState" id="submitterState" class="form-control" aria-labelledby="submitterState-label" >
<option value="null"></option>
<option value="102722" >Alabama</option>
<option value="102723" >Alaska</option>
<option value="102724" >American Samoa</option>
<option value="102721" >APO Address - AA</option>
<option value="102725" >Arizona</option>
<option value="102726" >Arkansas</option>
<option value="102727" >California</option>
<option value="102728" >Colorado</option>
<option value="102729" >Connecticut</option>
<option value="102730" >Delaware</option>
<option value="102731" >District of Columbia</option>
<option value="102732" >Florida</option>
<option value="102733" …Run Code Online (Sandbox Code Playgroud)