是否有可能使用Powermock存根即时对象?Powermock能够模拟最终/静态类/方法。
我想要的是:
Instant instant = PowerMockito.mock(Instant.now().getClass());
when(instant.getEpochSecond()).thenReturn(76565766587L);
我需要这种嘲弄在我的服务类中的其他地方使用,在那里我插入到表格中给出那个瞬间的时间。
提前谢谢!!
你可以这样做
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.springframework.boot.test.context.SpringBootTest;
import ru.apibank.delivery.service.publisher.runners.PowerMockTestRunner;
import java.time.Instant;
@SpringBootTest
@RunWith(PowerMockTestRunner.class)
@PrepareForTest(value = {Instant.class})
public class TestClass {
@Test
public void testInstant() {
long epochSeconds = 76565766587L;
Instant instant = Instant.ofEpochSecond(epochSeconds);
PowerMockito.mockStatic(Instant.class);
Mockito.when(Instant.now()).thenReturn(instant);
Assert.assertEquals(epochSeconds, Instant.now().getEpochSecond());
}
}
您也可以使用BDDMockitoBDDMockito.given(Instant.now()). will返回(即时);
是的,是的。
我的依赖:
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>2.0.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.28.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>2.0.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-core</artifactId>
<version>2.0.4</version>
<scope>test</scope>
</dependency>
还有我的JUnit:
@RunWith(PowerMockRunner.class)
@PrepareForTest({Instant.class})
public class InstantTest {
public InstantTest() {
}
private Instant mock;
@Before
public void setUp() {
PowerMockito.mockStatic(Instant.class);
mock = PowerMockito.mock(Instant.class);
PowerMockito.when(Instant.now()).thenReturn(mock);
}
@Test
public void test() {
Mockito.doReturn(76565766587L).when(mock).getEpochSecond();
assertEquals(76565766587L, Instant.now().getEpochSecond());
}
}
这段代码可以工作,但IMHO insert into table是关于集成测试,而不是单元测试,所以您需要一个嵌入式或testcontainers数据库和一个往返测试,在这里您可以真正编写数据并再次读取数据。
问题内容: 使用Meteor,我试图了解何时使用服务器端,同时仍保留即时UI更新。 在Andrew Scala的入门教程中,他声称当您要更新和修改数据库文档时应使用: 这个想法是,您定义服务器上所有执行危险操作(如修改和更新数据)的功能,然后让客户端调用这些功能并获得返回值(如常规功能)。客户永远不会看到实现,也不会亲自修改数据。服务器完成所有工作。 并遵循此建议,我在代码中实现了这一点: 服务器
如果我已经通过< code > var a = sinon . createstuinstance(my contractor)创建了一个实例。 如何替换其中一个存根函数,如 。 我这样做的主要原因是想实现这个提到的多个回调解决方法
问题内容: 在Mockito 文档和javadocs中,它说 建议将ArgumentCaptor用于验证,但不能用于存根。 但我不明白如何将ArgumentCaptor用于存根。有人可以解释上面的陈述并显示ArgumentCaptor如何用于存根或提供显示其完成方式的链接吗? 问题答案: 假设使用以下方法进行测试: 文档的Mockito说,你应该 不 以这种方式使用的捕手: 因为您只能在存根期间使
我有一个带有私有方法的类,该方法调用一些外部类并执行它,如果不使用powermock,我如何防止这种情况发生?(该项目使用Junit5,目前还不支持powermock)。 我考虑过将这些函数移到外面,但我觉得有时方法确实属于特定的类,因为它们是它的一部分,将它们移出对我来说没有意义,下面只是一个例子来说明。 我已经知道大多数人会说不要测试私有方法,但a.我不完全同意,b.我不想在这里测试这个方法,
当在eclipse中运行一个junit4测试案例时,它作为一个独立的应用程序运行得很好,我得到以下堆栈跟踪。 我的测试用例使用了以下注释 我如何告诉它忽略URLClasLoader?
我需要卸载一个静态方法 public TestESMock()引发ConfigurationException{ 有人能告诉我怎么做吗。