В этом модульном тесте Я издеваюсь над MNSClient、CloudQueue (возврат mnsClient.getQueueRef(queueName)) и ожидаю, что метод очереди.putMessage выполнится один раз, но в результате он не выполняется.
Вот исходный код Java код:
Код: Выделить всё
public class MnsTemplate {
private MNSClient mnsClient;
public MnsTemplate(MNSClient mnsClient) {
this.mnsClient = mnsClient;
}
public void sendMessage(String queueName, String messageBody) {
mnsClient.getQueueRef(queueName).putMessage(new Message(messageBody));
}
}
Код: Выделить всё
public interface MNSClient {
...
public CloudQueue getQueueRef(String queueName);
...
}
public final class CloudQueue {
...
public Message putMessage(Message message) throws ServiceException,
ClientException {
SendMessageAction action = new SendMessageAction(serviceClient,
credentials, endpoint);
SendMessageRequest request = new SendMessageRequest();
request.setMessage(message);
request.setRequestPath(queueURL);
return action.executeWithCustomHeaders(request, customHeaders);
}
...
}
Код: Выделить всё
import spock.lang.Specification
import static org.mockito.Mockito.*
class MnsTemplateTest extends Specification {
MNSClient mnsClient
CloudQueue queue
def setup() {
mnsClient = Mock(MNSClient)
queue = mock(CloudQueue.class)
}
def "sendMessage should send a message to the queue"() {
given:
def mnsTemplate = new MnsTemplate(mnsClient)
1 * mnsClient.getQueueRef("testQueue") >> queue
when:
mnsTemplate.sendMessage("testQueue", "Test Message")
then:
1 * queue.putMessage(new Message("Test Message"))
}
при выполнении модульного теста возникает ошибка:
Код: Выделить всё
Too few invocations for:
1 * queue.putMessage(new Message("Test Message")) (0 invocations)
Unmatched invocations (ordered by similarity):
None
at org.spockframework.mock.runtime.InteractionScope.verifyInteractions(InteractionScope.java:110)
at org.spockframework.mock.runtime.MockController.leaveScope(MockController.java:95)
at MnsTemplateTest.sendMessage should send a message to the queue(MnsTemplateTest.groovy:26)
jdk — 21, версия spock-core и spock-spring — 2.4-M4-groovy- 4.0
Подробнее здесь: https://stackoverflow.com/questions/791 ... ations-ord