有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (5) 个答案

  1. # 1 楼答案

    使用实现HttpServletResponse的MockHttpServletResponse。它有getCookies/getCookie方法,可以对其进行断言

  2. # 2 楼答案

    你可以试试这样的

    import javax.servlet.http.Cookie;
    
    @RunWith(MockitoJUnitRunner.class)
    public class TestClass {
    
        private MockHttpServletRequest servletRequest;
    
        @Before
        public void setUp() {
            servletRequest = new MockHttpServletRequest();
            Cookie[] cookies = new Cookie[]{
                new Cookie("test_key", "test_value")
            };
            servletRequest.setCookies(cookies);
        }
    
        @Test
        public void methodTest() {
            Assert.assertEquals("test_value", servletRequest.getCookies() 
            [0].getValue());
        }
    
    }
    
  3. # 3 楼答案

    import org.junit.jupiter.api.Test;
    import org.mockito.Mockito;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletRequest;
    
    class ComponentTests {
    
        private HttpServletRequest testRequest = Mockito.mock(HttpServletRequest.class);
    
        @Test
        void testMethod() {
            Cookie[] testCookies = new Cookie[]{new Cookie("name", "value")};
            Mockito.when(testRequest.getCookies()).thenReturn(testCookies);
    
            // Assertions
        }
    
    }
    
  4. # 4 楼答案

    最好的方法是使用Spring的MockHttpServletRequestMockHttpServletResponse

    它们是带有cookie getter的包装器实现。这些正是确保cookie设置可以验证所需的。Mockito在这里是不够的

  5. # 5 楼答案

    对于请求:构造数组,添加所需的任何Cookies,然后将行为添加到模拟:

    final Cookies[] cookies = new Cookies[] { ... };
    
    final HttpServletRequest request = mock(HttpServletRequest.class);
    given(request.getCookies()).thenReturn(cookies);
    
    ... pass to controller/servlet etc ...
    

    对于响应,您创建模拟,然后通过使用^{}捕获传递给addCookie的实际cookie来验证addCookie调用:

    final ArgumentCapor<Cookie> captor = ArgumentCaptor.forClass(Cookie.class);
    
    verify(response).addCookie(captor.capture());
    
    final List<Cookie> cookies = captor.getValue();
    
    ... perform asserion on cookies ...
    

    或生成预期的cookie并验证:

    final Cookie expectedCookie = ...
    
    verify(response).addCookie(expectedCookie);
    

    就个人而言,我不喜欢使用ArgumentCaptor,但这在很大程度上取决于您的测试