gpt4 book ai didi

java - Mockito 在通过 when() 时无法识别我的模拟类

转载 作者:搜寻专家 更新时间:2023-11-01 02:28:32 28 4
gpt4 key购买 nike

我希望 closeSession() 方法在被调用时抛出异常,以便我可以测试以查看我的日志记录是否已完成。我已将 Crypto 对象模拟为 mockCrypto 并将其设置如下:

@Test
public void testdecrpyMcpDataExceptions() throws Exception {
Crypto mockCrypto = Mockito.mock(Crypto.class);
try {
mockCrypto = CryptoManager.getCrypto();
logger.info("Cyrpto Initialized");
} finally {
logger.info("Finally");
try {
logger.info("About to close Crypto!");
Mockito.doThrow(new CryptoException("")).when(mockCrypto).closeSession();
mockCrypto.closeSession();
} catch (CryptoException e) {
logger.warn("CryptoException occurred when closing crypto session at decryptMcpData() in CipherUtil : esi");

}
}
}

但是当我运行它时,我得到了错误:

Argument passed to when() is not a mock!

我是在错误地 mock 类还是只是遗漏了什么?

最佳答案

不要覆盖你的模拟

mockCrypto = CryptoManager.getCrypto();

测试过

@Test(expected=RuntimeException.class)
public void testdecrpyMcpDataExceptions() throws Exception {
Crypto mockCrypto = mock(Crypto.class);

doThrow(new RuntimeException()).when(mockCrypto).closeSession();
mockCrypto.closeSession();

}

工作正常。

关于java - Mockito 在通过 when() 时无法识别我的模拟类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15388177/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com