gpt4 book ai didi

java - jMock 期望未指定

转载 作者:行者123 更新时间:2023-12-02 02:30:40 28 4
gpt4 key购买 nike

我是 jMock 的新手,所以我正在一个简单的例子中尝试一下。但我不明白为什么它不起作用。这是我正在测试的类:

package com.application;

import com.domain.Coordinate;
import com.domain.Playable;

public class ChessFacade {

private final Playable board;

public ChessFacade(Playable aBoard) {
board = aBoard;
}

public void showPotentialMoves(Coordinate aCoordinate) {
board.getTileOccupancy(aCoordinate);
}

}

这是我的模拟对象测试:

package unit.application;

import application.ChessFacade;
import com.domain.Coordinate;
import com.domain.Playable;
import junit.framework.TestCase;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.integration.junit4.JMock;
import org.jmock.integration.junit4.JUnit4Mockery;
import org.junit.runner.RunWith;

@RunWith(JMock.class)
public class ChessFacadeTest extends TestCase {

public void testFacadeGetsPotentialMovesFromBoard() {
Mockery context = new JUnit4Mockery();
final Playable mockBoard = context.mock(Playable.class);
ChessFacade facade = new ChessFacade(mockBoard);

final Coordinate locationToShow = new Coordinate(0, 0);
facade.showPotentialMoves(locationToShow);

context.checking(new Expectations() {{
oneOf(mockBoard).getTileOccupancy(locationToShow);
}});

context.assertIsSatisfied();
}

}

我收到的错误是:

Testcase: testFacadeGetsPotentialMovesFromBoard(unit.application.ChessFacadeTest):        Caused an ERROR
unexpected invocation: playable.getTileOccupancy(<Coordinate{row=0column=0}>)
no expectations specified: did you...
- forget to start an expectation with a cardinality clause?
- call a mocked method to specify the parameter of an expectation?
what happened before this: nothing!
java.lang.AssertionError: unexpected invocation: playable.getTileOccupancy(<Coordinate{row=0column=0}>)
no expectations specified: did you...
- forget to start an expectation with a cardinality clause?
- call a mocked method to specify the parameter of an expectation?
what happened before this: nothing!
at org.jmock.internal.InvocationDispatcher.dispatch(InvocationDispatcher.java:56)
at org.jmock.internal.InvocationDispatcher.dispatch(InvocationDispatcher.java:56)
at org.jmock.Mockery.dispatch(Mockery.java:218)
at org.jmock.Mockery.access$000(Mockery.java:43)
at org.jmock.Mockery$MockObject.invoke(Mockery.java:258)
at org.jmock.internal.InvocationDiverter.invoke(InvocationDiverter.java:27)
at org.jmock.internal.FakeObjectMethods.invoke(FakeObjectMethods.java:38)
at org.jmock.lib.JavaReflectionImposteriser$1.invoke(JavaReflectionImposteriser.java:33)
at $Proxy0.getTileOccupancy(Unknown Source)
at application.ChessFacade.showPotentialMoves(ChessFacade.java:15)
at unit.application.ChessFacadeTest.testFacadeGetsPotentialMovesFromBoard(ChessFacadeTest.java:22)

最佳答案

您可能必须在调用外观方法之前而不是之后定义您的期望。

关于java - jMock 期望未指定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5290208/

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