написать тест для WebSocketHandlerDecorator - Делегат не должен быть нулевым - PullRequest
0 голосов
/ 17 января 2019

Я хочу написать тест для проверки моего WebSocketHandlerDecorator, но у меня возникают некоторые проблемы.

вот ошибка:

java.lang.IllegalArgumentException: делегат не должен быть нулевым

в org.springframework.util.Assert.notNull (Assert.java:193) в org.springframework.web.socket.handler.WebSocketHandlerDecorator. (WebSocketHandlerDecorator.java:42)

import org.springframework.util.Assert;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.WebSocketMessage;
import org.springframework.web.socket.WebSocketSession;  

public class MyWebSocketHandlerDecorator extends WebSocketHandlerDecorator {

    public MySocketHandlerDecorator(WebSocketHandler delegate) {
        super(delegate);
    }

    @Override
    public void handleMessage(final WebSocketSession session, final WebSocketMessage<?> message) throws Exception {

        final TextMessage MyMessage = (TextMessage) message;
        super.handleMessage(session, MyMessage);
    }
}

вот мой тестовый пример:

public class MyWebSocketHandlerDecpratorTest {

    @Mock
    private WebSocketSession session;

    @Mock
    WebSocketHandler delegate;

    @Spy
    private WebSocketHandlerDecorator webSocketHandlerDecorator = new WebSocketHandlerDecorator(delegate);

    @InjectMocks
    MyWebSocketHandlerDecorator myWebSocketHandlerDecorator;

    private TextMessage message;

    @Before
    public void set_up(){
        MockitoAnnotations.initMocks(this);
        message = new TextMessage("Test Message".getBytes());
    }

    @Test
    public void handleMessage()throws Exception{
        myWebSocketHandlerDecorator.handleMessage(session, message);
        verify(webSocketHandlerDecorator, times(1)).handleMessage(session, message);
    }
}

Может ли кто-нибудь помочь мне исправить мой тест и выяснить, в чем его проблема?

public WebSocketHandlerDecorator(WebSocketHandler delegate) {
    Assert.notNull(delegate, "Delegate must not be null");
    this.delegate = delegate;
}

1 Ответ

0 голосов
/ 17 января 2019

Вам необходимо настроить @Spy в методе @Before, потому что во время создания класса макеты еще не инициализированы:

public class MyWebSocketHandlerDecpratorTest {
    @Mock
    private WebSocketSession session;

    @Mock
    WebSocketHandler delegate;

    private WebSocketHandlerDecorator webSocketHandlerDecorator;

    @InjectMocks
    MyWebSocketHandlerDecorator myWebSocketHandlerDecorator;

    private TextMessage message;

    @Before
    public void set_up(){
        MockitoAnnotations.initMocks(this);
        webSocketHandlerDecorator = Mockito.spy(new WebSocketHandlerDecorator(delegate));
        message = new TextMessage("Test Message".getBytes());
    }

    @Test
    public void handleMessage()throws Exception{
        myWebSocketHandlerDecorator.handleMessage(session, message);
        verify(webSocketHandlerDecorator, times(1)).handleMessage(session, message);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...