java.lang.IllegalStateException: fehlende Verhaltensdefinition für den vorhergehenden Methodenaufruf getMessage ("title")

Bin ich mit EasyMock(version 2.4) und TestNG für das schreiben von UnitTest.

Ich habe Folgendes Szenario und kann ich nicht ändern die Art und Weise der Klassenhierarchie definiert.

Teste ich ClassB die Verlängerung ClassA.

ClassB so Aussehen

public class ClassB extends ClassA  {

  public ClassB()
    {
        super("title");
    }

    @Override
    public String getDisplayName() 
    {
        return ClientMessages.getMessages("ClassB.title");
    }

}

ClassA-code

public abstract class ClassA {
    private String title;

    public ClassA(String title)
    {
        this.title = ClientMessages.getMessages(title);
    }

    public String getDisplayName()
    {
        return this.title;
    }
}

Klasse ClientMessages code

public class ClientMessages {
    private static MessageResourse messageResourse;

    public ClientMessages(MessageResourse messageResourse) 
    {
        this.messageResourse = messageResourse;
    }
    public static String getMessages(String code) 
    {
        return messageResourse.getMessage(code);

    }
}

MessageResourse Klasse code

public class MessageResourse {
    public String getMessage(String code) 
    {
        return code;
    }
}

Testen ClassB

import static org.easymock.classextension.EasyMock.createMock;

import org.easymock.classextension.EasyMock;
import org.testng.Assert;
import org.testng.annotations.Test;

public class ClassBTest
{
    private MessageResourse mockMessageResourse = createMock(MessageResourse.class);
    private ClassB classToTest;
    private ClientMessages clientMessages;


    @Test
    public void testGetDisplayName()
    {

    EasyMock.expect(mockMessageResourse.getMessage("ClassB.title")).andReturn("someTitle");

        clientMessages = new ClientMessages(mockMessageResourse);

        classToTest = new ClassB();

        Assert.assertEquals("someTitle" , classToTest.getDisplayName());
        EasyMock.replay(mockMessageResourse);
    }
}

Wenn ich bin mit diesem test bin ich immer folgende exception:

java.lang.IllegalStateException: fehlende Verhalten definition für den vorhergehenden Aufruf der Methode getMessage("Titel")

Beim Debuggen was ich gefunden habe ist, es ist nicht in Anbetracht der mock-Methode aufrufen
mockMessageResourse.getMessage("ClassB.Titel") wie Sie genannt wurde aus der construtor (ClassB-Objekt erstellen).

Kann einer bitte helfen Sie mir, wie um zu testen, in diesem Fall.

Dank.

InformationsquelleAutor der Frage user362199 | 2010-06-09

Schreibe einen Kommentar