Mockito参数在方法语句中捕获



在正在测试的类中,我的方法如下:

public RedirectView directToUrl()
    {
        URL url = urlUtils.createUrl( x.getPrefix(), new URLMaker( "/my/relative/url" ) );
        return new RedirectView( url.toString() );
    }

请注意,该方法本身没有任何参数。我正在尝试编写一个单位测试,该测试验证了在方法主体的第一行中传递的参数值/my/relative/url。在测试中,如果没有嘲笑的情况,就无法调用urlUtils.createUrl的方法(具有副作用,取决于多个外部内容)。在那中,我认为我无法在Mockito中的语句中捕获参数。

任何想法或思想都将不胜感激。

我能够使用of mockito中的 AnswerdoAnswer解决它。

public void test_directToUrl()
    {
        final String expRelUrl = "/my/relative/URL";
        Answer<URL> url = new Answer<URL>() {
            public URL answer(InvocationOnMock invocation) throws Throwable {
                URLMaker um = invocation.getArgumentAt(1, URLMaker.class);
                assertThat(um.getRelativeUrl(), equalTo(expRelUrl));
                return new URL("random_prefix" + um.getRelativeUrl());
            }
        };
        when( urlUtils.createUrl( Mockito.any(), Mockito.any() ) )
                .thenAnswer( url );
        RedirectView redirectView = directToUrl();
        assertThat(redirectView.getUrl(), containsString(expRelUrl));
    }

希望它也会帮助他人。

最新更新