2016-03-23 14 views

cevap

7

Bahar'ın sizin için yapmasına izin verebilirsiniz.

bir hizmet bağlıdır bir kontrol:

// grails-app/controllers/demo/DemoController.groovy 
package demo 

class DemoController { 
    def helperService 

    def index() { 
     def answer = helperService.theAnswer 
     render "The answer is ${answer}" 
    } 
} 

hizmeti:

// grails-app/services/demo/HelperService.groovy 
package demo 

class HelperService { 

    def getTheAnswer() { 
     42 
    } 
} 

hizmet enjekte bir birim testi:

// src/test/groovy/demo/DemoControllerSpec.groovy 
package demo 

import grails.test.mixin.TestFor 
import spock.lang.Specification 

@TestFor(DemoController) 
class DemoControllerSpec extends Specification { 

    static doWithSpring = { 
     helperService HelperService 
    } 

    void "test service injection"() { 
     when: 
     controller.index() 

     then: 
     response.text == 'The answer is 42' 
    } 
} 

bir ünite testi bir enjekte Hizmetin sahte sürümü:

// src/test/groovy/demo/AnotherDemoControllerSpec.groovy 
package demo 

import grails.test.mixin.TestFor 
import spock.lang.Specification 

@TestFor(DemoController) 
class AnotherDemoControllerSpec extends Specification { 

    static doWithSpring = { 
     helperService DummyHelper 
    } 

    void "test service injection"() { 
     when: 
     controller.index() 

     then: 
     response.text == 'The answer is 2112' 
    } 
} 

class DummyHelper { 

    def getTheAnswer() { 
     2112 
    } 
} 
+1

Enjekte ettiğiniz hizmetin diğer fasulyelere bağımlılıkları varsa, bunlar "doWithSpring" içinde de kullanılabilir. –

+0

Hizmette enjekte edilen fasulye için hala "null" alıyorum. –

+0

Bana bir dakika ver. Bir örnek yükleyeceğim. –

İlgili konular