ushidayの日記

主に「IBMi」のメモに・・・

Grails1.1.xのUnitテスト

Grails1.1系は...?
  • Grails1.1系で「create-domain-class」、「create-controller」をしていたら、1.0系とテストのテストケースの雛形が作成されるディレクトリが変わった?ようで、忘れないようにメモっときます。(1.1のRelease Notes,Documentsを読めば書いてあるのだろうけど...)
    • ディレクトリが「$PROJECT_HOME/test/integration」→「$PROJECT_HOME/test/unit」に変更。
    • テストケースのスーパークラスが「GroovyTestCase」→「GrailsUnitTestCase」に変更。
mockDomainで?
  • 今まで「integration」ディレクトリ内でしか、テストをした事がなかったので気付かなかったのですが、「unit」ディレクトリ内では、インスタンス生成時に、ドメインクラスの動的メソッドは生成されず、明示的に生成する必要があるようです。「mockDomain(ドメインクラス名)」で動的メソッド生成。まだ解らない事が沢山ありそうです。orz
import grails.test.*

class PublisherTests extends GrailsUnitTestCase {
    protected void setUp() {
        super.setUp()
    }
    protected void tearDown() {
        super.tearDown()
    }
    void testValidation() {
    	//動的メソッド生成
    	mockDomain(Publisher)
    	def publisher = new Publisher()

    	publisher.name = ""
    	assertFalse publisher.validate()

    	publisher.name = "平成出版"
    	assertTrue publisher.validate()

    }

    void testPersistence(){

    	mockDomain(Publisher)
    	assertEquals 0,Publisher.count()

	new Publisher(name:"Test Publisher1").save()
	new Publisher(name:"Test Publisher2").save()
    	assertEquals(2,Publisher.count())
    	Publisher.get(2).delete()
    	assertEquals(1,Publisher.count())

    }

}