Using PowerMock with Spock

前端 未结 3 1371
有刺的猬
有刺的猬 2021-02-04 13:00

I have a class with a few static methods.I need to Mock these static methods. I know PowerMock does this,but I was not able to find any tutorials/materials that shed some light

3条回答
  •  离开以前
    2021-02-04 13:40

    I was stuck here for a while too. After searching for hours, I saw this github repo: https://github.com/kriegaex/Spock_PowerMock.

    I tried adding a PowerMockRule which essentially enabled me to use PowerMock together with Spock. I had to add these dependencies. Version is at 1.5.4

       
          org.powermock
          powermock-module-junit4
          ${powermock.version}
          test
       
    
       
            org.powermock
            powermock-module-junit4-rule
            ${powermock.version}
            test
        
    
        
            org.powermock
            powermock-classloading-xstream
            ${powermock.version}
            test
        
    

    My class looks like this:

    import org.junit.Rule
    import org.mockito.Mockito
    import org.powermock.api.mockito.PowerMockito
    import org.powermock.core.classloader.annotations.PrepareForTest
    import org.powermock.modules.junit4.rule.PowerMockRule
    import spock.lang.Specification
    
    @PrepareForTest([SomeStaticClass.class])
    public class FlightFormSpec extends Specification { 
    
        @Rule PowerMockRule powerMockRule = new PowerMockRule();
    
        def "When mocking static"() {
            setup :
                PowerMockito.mockStatic(SomeStaticClass.class)
    
            when :
                Mockito.when(SomeStaticClass.someStaticMethod()).thenReturn("Philippines!");
    
            then :
                SomeStaticClass.someStaticMethod() == "Philippines!"
        }
    }
    

    Here is another resource: https://github.com/jayway/powermock/wiki/powermockrule

提交回复
热议问题