Unit-Tests : Getting started with Service Unit Test
Hi all,
Here I am giving a brief introduction about unit testing of services in grails. I will explain it with the help of a simple example.
We have a domain class named: Item
Two services : UtilService and ItemService
Code of UtilService.groovy
// class UtilService code
class UtilService {
boolean transactional = true
Integer calculatePrice(Item item, Integer vat, Integer profit) {
return item.price * vat * profit
}
}
Code of ItemService.groovy
// ItemService class code
class ItemService {
boolean transactional = true
def utilService
Integer calculateCost(Item item,Integer quantity) {
Integer price = utilService.calculatePrice(item,5,8)
Integer totalCost = price * quantity
return totalCost
}
}
Our test case:-
void test_calculateCost() {
// Step-1: Mocking the domain class
def instance = [new Item()]
mockDomain(Item, instance)
//Step-2: Mocking the service and its method used in the function that has to be tested
def otherService = mockFor(UtilService)
otherService.demand.calculatePrice(1) {l,m, n -> return 150}
// Step-3: creating the instance of our service
def itemService = new ItemService()
itemService.utilService = otherService.createMock()
// Step-4: Calling the method to be tested
def amount = itemService.calculateCost(instance[0],10)
assertEquals 1500, amount
}
Hope it helps.
For more…. wait for the next blog on unit testing
Regards
Imran
imran@intelligrape.com
You are mocking services, you are NOT testing services… disappointing…