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
