第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

監(jiān)視具有事務(wù)方法的服務(wù) spring

監(jiān)視具有事務(wù)方法的服務(wù) spring

紅糖糍粑 2023-02-23 10:29:00
我正在嘗試編寫一些 JUnit 測試。在我的測試類中,我需要監(jiān)視在實現(xiàn)中具有事務(wù)方法的服務(wù)。當(dāng)我試圖監(jiān)視該服務(wù)時,出現(xiàn)此錯誤:Mockito cannot mock/spy because : - final class如果我@Transactional從方法中刪除,則間諜工作正常。我知道這是因為服務(wù)代理的問題。我該如何解決這個問題?我的測試課:@RunWith(SpringRunner.class)@ContextConfiguration(classes = {CreateIfcClusterTaskTest.Config.class})@DirtiesContext(classMode =        DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)public class CreateIfcClusterTaskTest {    static class Config extends SpringTestConfiguration {        @Bean        @Primary        public VirtualControllerService        virtualControllerService(VirtualControllerService                                         virtualControllerService) {            return Mockito.spy(virtualControllerService);        }    }}我的服務(wù) - VirtualControllerService:public interface VirtualControllerService {    JsonHost createVifcHostForWebApi(VirtualController virtualController);    void stopDocker(DockerClient docker, String joinerIpAddress) throws            DockerException, InterruptedException;}我的服務(wù)實現(xiàn) - VirtualControllerServiceImpl:@Servicepublic class VirtualControllerServiceImpl implements        VirtualControllerService {    @Override    @Transactional    public JsonHost createVifcHostForWebApi(VirtualController                                                    virtualController) {        JsonHost jsonHost = new JsonHost();        jsonHost.setIP(virtualController.getIpAddress());        jsonHost.setUser(environment.getProperty("VIFC_WEBAPI_USER"));        jsonHost.setPassword(environment.getProperty("VIFC_WEBAPI_PASSWORD"));        return jsonHost;    }}
查看完整描述

2 回答

?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗 獲得超3個贊

根據(jù)我發(fā)現(xiàn)的這個問題,一種可能的解決方法是使用

因此,代替 spy(proxy) 使用 mock(TestSubject.class, delegatesTo(springProxy))。

在你的情況下(未經(jīng)我測試),那可能是

return Mockito.mock(VirtualControllerService.class, AdditionalAnswers.delegatesTo(virtualControllerService));

AdditionalAnswers.delegateTo有關(guān)詳細(xì)信息,請參閱。請注意,您無法在您的間諜實例中對內(nèi)部方法調(diào)用進(jìn)行存根或驗證(只會跟蹤對模擬對象的方法調(diào)用)。用例:

對于使用通常的間諜 API 難以模擬或監(jiān)視的對象的間諜或部分模擬很有用??赡艿挠美阂呀?jīng)自定義代理對象


查看完整回答
反對 回復(fù) 2023-02-23
?
冉冉說

TA貢獻(xiàn)1877條經(jīng)驗 獲得超1個贊

您可以在測試類中使用 @Mock 注釋CreateIfcClusterTaskTest來模擬服務(wù)實例,而不是在您的配置中創(chuàng)建服務(wù)類的 bean。


它看起來像這樣:


@RunWith(SpringRunner.class)

@ContextConfiguration(classes = { CreateIfcClusterTaskTest.Config.class })

@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)

public class CreateIfcClusterTaskTest {


    @Mock

    VirtualControllerService virtualControllerService;

}

而且您必須使用 Mockito 的注釋初始化對象,如下所示:


@Before

public void setUp() throws Exception {

    MockitoAnnotations.initMocks(this);

}

希望有所幫助。


查看完整回答
反對 回復(fù) 2023-02-23
  • 2 回答
  • 0 關(guān)注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號