Unit testing 如何编写此控制器方法的单元测试?
我试图学习grails单元测试,我有一个方法Unit testing 如何编写此控制器方法的单元测试?,unit-testing,grails,testing,Unit Testing,Grails,Testing,我试图学习grails单元测试,我有一个方法 def getProductList(){ List<Product> products = productService.getSodaProductList(); render(view:"productList",model:[products:products]) } 但是不起作用,有人能建议如何编写此测试函数吗?我通常使用以下方法进行单元测试 使用spock: import grails.test.mixin.
def getProductList(){
List<Product> products = productService.getSodaProductList();
render(view:"productList",model:[products:products])
}
但是不起作用,有人能建议如何编写此测试函数吗?我通常使用以下方法进行单元测试 使用spock:
import grails.test.mixin.Mock
import grails.test.mixin.TestFor
import spock.lang.Specification
@TestFor(SodaProductController)
@Mock([SodaProduct, ProductService])
class SodaProductControllerSpec extends Specification {
void testGetSodaProductList() {
when:
SodaProduct sodaProduct =
new SodaProduct(productName: "Test Product",
productDesc: "Desc", price: 10.0)
controller.getProductList()
then:
view == "/sodaProduct/productList"
model.products.size() == 2
}
}
import grails.test.mixin.Mock
import grails.test.mixin.TestFor
@TestFor(SodaProductController)
@Mock([SodaProduct, ProductService])
class SodaProductControllerTests {
void testGetSodaProductList() {
SodaProduct sodaProduct =
new SodaProduct(productName: "Test Product",
productDesc: "Desc", price: 10.0)
controller.getProductList()
assert view == "/sodaProduct/productList"
assert model.products.size() == 2
}
}
无spock:
import grails.test.mixin.Mock
import grails.test.mixin.TestFor
import spock.lang.Specification
@TestFor(SodaProductController)
@Mock([SodaProduct, ProductService])
class SodaProductControllerSpec extends Specification {
void testGetSodaProductList() {
when:
SodaProduct sodaProduct =
new SodaProduct(productName: "Test Product",
productDesc: "Desc", price: 10.0)
controller.getProductList()
then:
view == "/sodaProduct/productList"
model.products.size() == 2
}
}
import grails.test.mixin.Mock
import grails.test.mixin.TestFor
@TestFor(SodaProductController)
@Mock([SodaProduct, ProductService])
class SodaProductControllerTests {
void testGetSodaProductList() {
SodaProduct sodaProduct =
new SodaProduct(productName: "Test Product",
productDesc: "Desc", price: 10.0)
controller.getProductList()
assert view == "/sodaProduct/productList"
assert model.products.size() == 2
}
}
对于规范,我们需要安装一些插件,对吗?您的grails版本是什么?我的是2.0.3,这是一个问题我正在使用grails 2.3.5,它包括spock。我认为斯波克包含在2.3.x中。所以,是的,你需要安装插件。没有spock,就不会有给定的、何时、然后的块。:)