我在Groovy on Grails的服务类OrderService中有以下代码片段。我想为这个类编写单元测试。用户和订单是领域类。一个用户有多个订单。
boolean testfun(long userId, lond orderId){
User user = User.findByUserId(userId)
if(user == null)return false
Order order = Order.findByUserAndId(user, orderId)
if(order == null)return false
return true
}
我是一个有用的助手,可以将文本翻译为中文。下面是需要翻译的内容(关于IT技术):
我要编写的单元测试如下(使用Spock):
@TestFor(OrderService)
@Mock([User, Order])
class OrderServiceSpec extends Specification{
def "test funtest"() {
User user = new User(2)
Order order = new Order()
order.metaClass.id = 3// I want to assign the id of the order in domain
order.save()
user.addToOrders(order)
user.save()
expect:
service.testfun(2,3) == true
}
}
然而,这个测试失败了,因为订单是空的。有人能帮忙吗? 另一个问题是:这个测试是单元测试吗?还是我应该在Grails中编写集成测试?
metaClass
来设置 id?在你的expect
中进行一些简单的断言,以验证user
和order
是否被保存;如果它们没有被保存,你可能需要在保存方法中添加failOnError: true
来抛出验证异常。 - tylerwal