繁体   English   中英

模拟一个无效方法-这是正确的吗?

[英]Mocking a void method - is this correct?

我需要对以下方法进行单元测试。 如果'message'中的XML无效,validate()方法将引发异常。

我需要2个测试,其中一项未通过验证,另一项通过了。 我在下面尝试了失败的测试,但无法正常工作。 谁能告诉我该怎么做?

    public Boolean validateXML(Message message, Mediation mediation){

    try{
            mediation.getXMLSupport().validate(message,"mySchema.xsd");
            return true;
        } catch(Exception e) {
            return false;
        }
    }


    @Mock
    private Message message;
    @Mock
    private Mediation mediation;

    @Mock
    XMLSupport xmlSupport;

    @Test
    public void test() {
        given(message.getCurrentPayload()).willReturn(new StringMessage("<MalformedXML/>"));
        given(mediation.getXMLSupport()).willReturn(xmlSupport);

        assertFalse((validationSequence.validateXML(message, mediation)));
    }

看起来您正在尝试使用模拟对象测试XMLSupport.validate()方法并期望它引发异常,要实现此目标,您不能使用Mock XmlSupport对象,如果可能,请创建一个正确的XMLSupport对象并对其进行测试,它应该工作,否则,如果您必须使用Mocked XMLSupport,则需要为XMLSupport提供另一个给定的条件,以显式引发异常,但是我看不出进行这种测试的意义。

private XMLSupport xmlSupport = new XMLSupport();

    @Test
    public void test() {
        given(message.getCurrentPayload()).willReturn(new StringMessage("<MalformedXML/>"));
        given(mediation.getXMLSupport()).willReturn(xmlSupport);

        assertFalse((validationSequence.validateXML(message, mediation)));
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM