使用Spock的PowerMock

Avi*_*ash 9 groovy powermock spock

我有一个带有一些静态方法的类.我需要模拟这些静态方法.我知道PowerMock会这样做,但是我无法找到任何能够解释"Spock + PowerMock"集成的教程/材料.我更喜欢Spock和Junit,因此是一个难题.有没有办法让这两个框架发挥作用?任何帮助都非常感激.示例代码,更是如此.

更新:方法的当前状态

Spock表现得很奇怪

jua*_*olo 14

我也被困在这里一段时间了.搜索了几个小时后,我看到了这个github repo:https://github.com/kriegaex/Spock_PowerMock.

我尝试添加一个PowerMockRule,它实际上使我能够与Spock一起使用PowerMock.我不得不添加这些依赖项.版本为1.5.4

   <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-module-junit4</artifactId>
      <version>${powermock.version}</version>
      <scope>test</scope>
   </dependency>

   <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4-rule</artifactId>
        <version>${powermock.version}</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-classloading-xstream</artifactId>
        <version>${powermock.version}</version>
        <scope>test</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我的班级看起来像这样:

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!"
    }
}
Run Code Online (Sandbox Code Playgroud)

这是另一个资源:https://github.com/jayway/powermock/wiki/powermockrule

  • 嘿,你找到了我的回购并且让我免于自己回答这个问题.:-) (2认同)