2015-11-16 7 views
-1

Я использую JMock, чтобы проверить следующий метод в классе ProcessingTest:JMock ожидая недействительный метод будет вызван

public void handle(Process process) { 
    processor.handleProcess(process); 
} 

Я издевался вне processor и process классов. Для моего теста для этого конкретного метода, мои JMock ожидания следующим образом:

checking(new Expectations() { 
     { 
      oneOf(ProcessingTest.this.processor).handleProcess(
        ProcessingTest.this.process); 
     } 
     }); 

Это вызывает следующую ошибку:

unexpected invocation ... 
no expectations specified 
.... 

я предполагаю, что есть что-то неправильное в ожиданиях, что должны им быть? Я попытался ожидать, что метод вызвал atLeast один раз, но это, похоже, проблема для методов void.

+0

насчет 'проверить (процессор) .handleProcess (процесс);'? – Manu

+0

Может быть, с Mockito будет проще? – Rufi

+0

@Manu Это не позволяет мне использовать 'verify' для аргументов void – dres

ответ

3

Я понятия не имею, где ваша проблема именно так, как вы не указали достаточно кода. Это, как сделать это с JMock:

import org.jmock.Expectations; 
import org.jmock.integration.junit4.JUnitRuleMockery; 
import org.jmock.lib.legacy.ClassImposteriser; 
import org.junit.Rule; 
import org.junit.Test; 

public class ProcessingTest { 

    @Rule 
    public final JUnitRuleMockery mockery = new JUnitRuleMockery() {{ 
     setImposteriser(ClassImposteriser.INSTANCE); 
    }}; 

    // just some dummy object, we will be comparing reference only 
    private final Process process = mockery.mock(Process.class); 

    private final Processor processor = mockery.mock(Processor.class); 

    private final Processing processing = new Processing(processor); 

    @Test 
    public void test() { 
     mockery.checking(new Expectations() {{ 
      oneOf(ProcessingTest.this.processor).handleProcess(ProcessingTest.this.process); 
     }}); 

     processing.handle(process); 
    } 

} 

public class Processing { 

    private final Processor processor; 

    public Processing(Processor processor) { 
     this.processor = processor; 
    } 

    public void handle(Process process) { 
     processor.handleProcess(process); 
    } 

} 

public interface Processor { 

    void handleProcess(Process process); 

} 

Вы нужны эти зависимости:

<dependency> 
    <groupId>org.jmock</groupId> 
    <artifactId>jmock</artifactId> 
    <version>2.6.0</version> 
</dependency> 
<dependency> 
    <groupId>org.jmock</groupId> 
    <artifactId>jmock-legacy</artifactId> 
    <version>2.6.0</version> 
</dependency> 
<dependency> 
    <groupId>org.jmock</groupId> 
    <artifactId>jmock-junit4</artifactId> 
    <version>2.6.0</version> 
</dependency>