[TIL]8月18日


UserControllerTestが急に動かなくなった…!


org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.itda.apiserver.jwt.TokenProvider' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

エラーログが表示され、TokenProviderは空に登録されていません.
以下に示すように、@WebMvcTestを使用してテストを行います.
@WebMvcTest(UserController.class)
public class UserControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @MockBean
    private UserService userService;

    @Mock
    private User user;

    private ObjectMapper objectMapper = new ObjectMapper();

    @Test
    @DisplayName("회원 가입 기능 테스트")
    void signUp() throws Exception {

		...
		}
}
公式文書を見ました。@WebMvcTestを使用してテストを行う場合、@Componentはスキャンされないため、問題が発生する可能性があります.
構成部品を登録するには、@Import宣言を使用して登録するクラスを指定します.
@WebMvcTest(UserController.class)
@Import(value = {TokenProvider.class, TokenExtractor.class})
public class UserControllerTest {

   ...
}

Outh実装、RestTemplateとWebクライアント?


RestTemplateはSpringバージョン5からメンテナンスモードに変更され、今後廃棄されます.
SpringはWebクライアントの使用も推奨します.
非モチベーションをサポートします.→非同期動作についてはさらに学ぶ必要がある.(参照:https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html)

今日やったこと

  • 以前はプロジェクトでoauthを適用したことがありますが、難しいです...
  • webclientはoauthを実装しています.
  • トレーニングを行います-Let codeの3つの問題解読されました.