6

だから、私は私のプロジェクトで春のセッションを使用しています。それを使用してプロジェクトで統合テストを作成する方法は? 春のセッションの内部で何かをモックする必要がありますか? または、組み込みの redis を使用する合理的な方法はありますか?

過去に @EnableEmbeddedRedis アノテーションがあったのを見ましたが、削除されたようです: https://github.com/spring-projects/spring-session/issues/248

//編集

私はMockHttpSessionをに渡そうとしました

mockMvc.perform(post("/register").session(mockHttpSession)

とにかくSpringはredisに接続しようとして失敗します。

4

4 に答える 4

1

テストで spring-session ライブラリとの統合をバイパスするため、mockHttpSession の使用はお勧めしません。私は...するだろう

@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration
public class ExampleControllerV2SpringSessionTest {

@Autowired
private WebApplicationContext wac;

@Autowired
private SessionRepository sessionRepository;

@Autowired
private SessionRepositoryFilter sessionRepositoryFilter;

//this is needed to test spring-session specific features
private MockMvc mockMvcWithSpringSession;

@Before
public void setup() throws URISyntaxException {

this.mockMvcWithSpringSession = MockMvcBuilders
   .webAppContextSetup(wac)
   .addFilter(sessionRepositoryFilter)
   .build();
}
}

テスト中に常に redis インスタンスを準備するのは難しいことを知っているspring.session.store-type=hash_mapため、テスト ケースにこのプロパティを使用することをお勧めします。

于 2017-12-31T01:42:30.423 に答える