[Grails] Mocking persistence method in GORM unit test

by 스뎅(thDeng) on

GORM의 도메인 객체를 꺼내오는 테스트가 필요할 때 grails.test.MockUtils.mockDomain()을 사용하면 된다. 실제로 DB에 넣고 가져오는 것처럼 동작한다.

class FoodService {
  def foo(String name) {
    Food.findByName(name)
  }
}

간단히 이름으로 찾아와서 가공 후 반환하는 메소드를 테스트할 때, mockDomain()을 이용해서 테스트할 도메인 클래스와 객체들을 넣어주면 된다. setup이나 given 어디든 상관은 없다.

def "is my food risky"() {
  setup:
  def f1 = new Food(name: "Coffee", isRisky: true)
  def f2 = new Food(name: "Bread", isRisky: false)
  MockUtils.mockDomain(Food, [f1, f2])

  when:
  def coffee = service.foo("Coffee")

  then:
  coffee.isRisky == true

  when:
  def bread = service.foo("Bread")

  then:
  bread.isRisky == false
}

참고

별도로 명시하지 않을 경우, 이 블로그의 포스트는 다음 라이선스에 따라 사용할 수 있습니다: Creative Commons License CC Attribution-NonCommercial-ShareAlike 4.0 International License