Я пытаюсь создать тестовые примеры для веб-службы, но я получаю nullpointerexception. Это веб-сервис:Mockito бросает исключение NullpointerException при использовании макета
@Path("friendservice")
public class FriendWebService {
private static final Logger logger = Logger.getLogger(FriendWebService.class);
@EJB
private FriendRequestServiceInterface friendRequestService;
@GET
@Path("friendrequest")
@Produces(MediaType.TEXT_PLAIN)
public String createFriendRequest(
@Context HttpServletRequest request) {
logger.info("createFriendRequest called");
String result = "false";
User user = (User) request.getSession().getAttribute("user");
User otherUser = (User) request.getSession().getAttribute("profileuser");
if ((user != null) && (otherUser != null)) {
logger.info("Got two users from session, creating friend request.");
if (friendRequestService.createFriendRequest(user, otherUser)) {
result = "true";
}
}
return result;
}
}
Это мой тестовый класс:
public class FriendWebServiceTest {
@Mock
FriendRequestServiceInterface FriendRequestService;
@Mock
Logger mockedLogger = mock(Logger.class);
@Mock
HttpServletRequest mockedRequest = mock(HttpServletRequest.class);
@Mock
HttpSession mockedSession = mock(HttpSession.class);
@Mock
User mockedUser = mock(User.class);
@Mock
User mockedOtherUser = mock(User.class);
@InjectMocks
FriendWebService friendWebService = new FriendWebService();
@Before
public void setUp() throws Exception {
}
@Test
public void testCreateFriendRequest() throws Exception {
when(mockedRequest.getSession()).thenReturn(mockedSession);
when(mockedSession.getAttribute("user")).thenReturn(mockedUser);
when(mockedSession.getAttribute("profileuser")).thenReturn(mockedOtherUser);
when(FriendRequestService.createFriendRequest(mockedUser, mockedOtherUser)).thenReturn(true);
assertTrue(friendWebService.createFriendRequest(mockedRequest) == "true");
}
NullPointerException происходит «, когда (FriendRequestService.createFriendRequest (mockedUser, mockedOtherUser)) thenReturn (. правда);"
Что я делаю неправильно?
Я пробовал использовать только аннотации Mock, но при этом возникает ошибка «когда (mockedRequest.getSession()). ThenReturn (mockedSession);» но эта проблема исчезает, когда вы используете метод mock(). Я использую метод mock и удаляю аннотации, но я хочу знать, почему аннотации терпят неудачу. –
Вы назвали 'MockitoAnnotations.initMocks (this);' в какой-то момент? –