묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
반환값 옆에 붙는 어노테이션도 같은 건가요?
https://www.baeldung.com/spring-mvc-image-media-data 이거보면서 다시 복습하고 있었는데요@RequestMapping(value = "/image-byte-array", method = RequestMethod.GET) public @ResponseBody byte[] getImageAsByteArray() throws IOException { InputStream in = servletContext.getResourceAsStream("/WEB-INF/images/image-example.jpg"); return IOUtils.toByteArray(in); };@RequestMapping(value = "/image-byte-array", method = RequestMethod.GET) @ResponseBody public byte[] getImageAsByteArrayV2() throws IOException { InputStream in = servletContext.getResourceAsStream("/WEB-INF/images/image-example.jpg"); return IOUtils.toByteArray(in); }이렇게 반환타입 옆에 어노테이션이 붙어있더라구요위랑 아래랑 같은 코드가 맞죠 ?그런데 위 처럼 작성하는 이유가 있을까요 ?
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
Series와 Print 질문
타이타닉 csv파일을 불러올때 변수명을 print문으로 출력해서 가져오면 Series로 값이 출력되고그냥 변수명을 입력에서 출력하면 dataframe 형태로 가져오던데 왜 다른거죠 궁금하네요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
쿼리파라미터 남기기
스프링 부트 3.0 이상에서는 강의에서 쿼리 파라미터 남기기 부분이 실행되지 않습니다. 어떻게 해야 하나요 ?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
RenderShadow 를 먼저 하는 이유
안녕하세요, 혹시 RenderShadow 를 RenderLight 보다 먼저하는 이유가 뭘지 궁금해서요. 저가 생각한건 RenderShadow 는 실제 Shadow 를 그리는게 아니라, 깊이 비교만하고 나중에 RenderLight 하기전에 그리는것 같은데 맞을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Action 질문
Action에 += 으로 함수를 추가하면 값이 복사가 되는건가요 아침 참조형식인가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Slerp궁금증입니
if (Input.GetKey(KeyCode.W)) { transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.forward), rotateSpeed); transform.position += Vector3.forward Time.deltaTime speed; } if (Input.GetKey(KeyCode.A)) { transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.left), rotateSpeed); transform.position += Vector3.left Time.deltaTime speed; } if (Input.GetKey(KeyCode.S)) { transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.back), rotateSpeed); transform.position += Vector3.back Time.deltaTime speed; } if (Input.GetKey(KeyCode.D)) { transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.right), rotateSpeed); transform.position += Vector3.right Time.deltaTime speed; }이런식으로 하고 rotateSpeed를 1.0f로 한뒤 유니티에서 a를 살짝 눌렀는데 90도만큼 회전하지 않아서 왜 그런지 궁금합니다
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
권한요청드려요
infrean ID : yechanlee@hanwha.cominfrean email : yechanlee@hanwha.comgithub id : yechanleegithub Username : yechanlee 항상감사드립니다.
-
미해결[핵집] 2025 빅데이터 분석기사(필기)_과목 3~4
통합 강의교안 요청
안녕하세요통합 강의교안 요청드립니다이메일 주소는 zipgohom2@gmail.com 입니다
-
미해결[핵집] 2025 빅데이터 분석기사(필기)_과목 1~2
통합 강의교안 요청
안녕하세요통합 강의교안 요청드립니다 이메일 주소는 zipgohom2@gmail.com 입니다
-
해결됨Verilog FPGA Program 1 (Arty A7-35T)
I2C Master 모듈관련 질문입니다.
페이지 156쪽에 대한 질문입니다.scl신호를 생성하기 위한 카운터와 scl 반주기 counter 두개를 설계하신 이유가 궁금합니다. 아무리 읽어봐도 잘 이해가 안가서요 ㅠㅠ.. 그리고 3-1) start_runw부분을 한번만 더 자세하게 설명해주실수 있을까요?
-
미해결Vue.js + TypeScript 완벽 가이드
두번째 프로젝트 권한 요청드립니다.
안녕하세요! 두번째 프로젝트 권한 요청 드립니다.계정: rhkd1769@gmail.com
-
해결됨홍정모의 따라하며 배우는 C++
배열을 함수 내부에서 선언된 경우, 초기화했을 때의 기본값
배열을 함수 내부에서 선언된 경우, 초기화했을 때의 기본값을 출력할 때 그냥 출력하면 쓰레기값이 나오는데 for문을 이용해서 출력하면 다른 값으로 출력됩니다. 왜 차이가 발생하는 지 알 수 있을까요?
-
미해결실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지
Zip compression module 질문
안녕하세요Zip compression module 실습에서 궁금한 점이 있어 문의 드립니다.dir_to_zip = "/home/runner/zip/zipme"이라고 경로 설정을 했는데,copression 한 결과 값이 zipme 폴더에 저장되지 않는지 궁금합니다.감사합니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
Intersection observer에서
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.두 가지 질문이 있는데 답변해주시면 정말 감사드립니다.ㅠㅠㅠentrise[0] 이 뜻하는건 뭔지 알 수 있을 까요??아래에서 인수로 마지막 Post의 element를 설정했는데 그걸 의미하는건가요??위에서 setPage(page+1)을 하면 아래에서setPage가 +1이 돼서page가 +1이 되고, getkey의 pageIndex가 page값으로 돼서/posts?page=${pageIndex} 가 호출 되는 건가요??const page 가 getkey의 pageIndex인건가요??
-
해결됨두고두고 써먹는 유니티 VR
XR Interaction Toolkit
저가 사용하고 있는 버전은 2.2.0입니다 영상과 버전차이가 있긴하지만 실뮬레이터를 통해 휠을 이용하여 움직이면 앞과 뒤로 움직여야 하는데 모델의 큐브가 회전합니다 이럴경우 어떤부분을 수정해야 하나요?
-
해결됨[코드캠프] 시작은 프리캠프
border: none과 0px의 차이
강의에서는 none이라고 해주셨는데한번 0px로 해보니까 차이가 없더라구요 (육안으로는 차이 발견 못함)혹시 0px이 아닌 none로 하는 이유가 있나요?iframe은 네모난 aqua 영역 전부입니다~
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
반사된 메세지 recv하였을 때의 순서 동일한 이유
안녕하세요, 강사님! GameRoom에서 client -> server로 보낸 메세지를 다른 client들에게 broadcasting을 하는데, 그래서 출력 결과가 10개씩 나오는 이유가10개의 클라이언트들이 보낸걸 다시 반환하는것이기 때문에.즉, 반사가 10개씩 나오는거고, 근데 클라이언트 console창이 하나로만 되어있다보니 10개의 클라이언트가 받은 반사메세지가 한번에 출력되어 10개씩 출력되는 것이라고 이해를 했습니다. 그런데 각 session이 어떤 순서로 반사를 받는지 궁금하여 client의 serversession에도 sessionid를 부여하고 테스트로 출력을 해 본 결과 아래와 같았습니다.session이 send 를 하는 것은 async로 구현하였기 때문에 비동기방식인데, 저렇게 규칙적으로 받아오더라구요.(4 2 3 1 5 0 6 7 8 9 ...순서) Program.Room.Enter(this); 를 한 순서대로 GameRoom의 _sessions 리스트에 추가가되니 Broadcast 때 리스트를 foreach하니까 리스트에 추가된 순서대로 오는 것 같다고 생각이 드는데, 사실 네트워크 상태에 따라서 패킷이 라우터에 경로가 달라지니 각기 다른 순서로 올 수도 있고(이건 그렇게 부하가 큰편은 아니니 그래도 해당 원인은 무시한다고 쳐도), 멀티스레드이기도 하고 thread context switching 으로 인해 스레드간 순서가 마구마구 뒤바뀔거라 예상을 했지만, 저렇게 규칙적으로 나오는 이유가 무엇인지 궁금합니다. 그리고 새로 실행 시 마다 저 규칙이 변경이 되는데, 그 이유는 사실Listener에서 Onconnected를 하여 Program.Room.Enter(this); 안에 들어가는 순서가 멀티스레딩이라서 다르게 들어가기 때문이라고 이해를 했습니다. 그렇다면 멀티스레딩으로 인한 순서 뒤바뀜이 있다는 증거이고 사실 listener가 받는 것 또 한 GameRoom에서 broadcasting하는것과 비슷하게 lock을 걸고 순서대로 session list에 추가하고 즉, 순차적으로 여기서 리스트 순서대로 보내도 순서뒤바뀜이 일어나서 GameRoom에서의 List에 쌓이는 순서도 바뀌는거라고 생각이 들거든요. 그러면 SendForEach에서 ServerSession리스트를 보낼 땐 멀티스레드로 인해서 순서가 뒤바뀌는데, Server의 GameRoom에서 ClientSession 리스트를 뽑아 send할 땐 순서가 유지되어 send보내지는 이유는 뭔가요?
-
미해결스프링 핵심 원리 - 기본편
UnsatisfiedDependencyException 에러가 떠요..!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 영한님 UnsatisfiedDependencyException에러를 구글링해봤습니다. 이유는 memberServiceImlple을 빈으로 등록할 때 파라미터로 MemberRepository빈이 생성자주입이 안 된다는 것 같습니다. 해결하려고 하는데 어디를 손대야 될지 모르겠습니다... 혹시 어느 부분이 잘못된 것인지 알 수 있을까요..? [MemberServiceImpl][MemoryMemberRepository][AutoAppConfig][AppConfig]java.lang.IllegalStateException: Failed to load ApplicationContextat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:98)at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:124)at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118)at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:43)at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:248)at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:138)at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$8(ClassBasedTestDescriptor.java:363)at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.executeAndMaskThrowable(ClassBasedTestDescriptor.java:368)at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$9(ClassBasedTestDescriptor.java:363)at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312)at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestInstancePostProcessors(ClassBasedTestDescriptor.java:362)at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$instantiateAndPostProcessTestInstance$6(ClassBasedTestDescriptor.java:283)at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:282)at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$4(ClassBasedTestDescriptor.java:272)at java.base/java.util.Optional.orElseGet(Optional.java:369)at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$5(ClassBasedTestDescriptor.java:271)at org.junit.jupiter.engine.execution.TestInstancesProvider.getTestInstances(TestInstancesProvider.java:31)at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$prepare$0(TestMethodTestDescriptor.java:102)at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:101)at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:66)at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$prepare$2(NodeTestTask.java:123)at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)at org.junit.platform.engine.support.hierarchical.NodeTestTask.prepare(NodeTestTask.java:123)at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:90)at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57)at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [C:\Inprun_SpringCore\core\out\production\classes\hello\core\member\MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,MemberRepositoryat org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800)at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955)at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:136)at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:141)at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:90)... 72 moreCaused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,MemberRepositoryat org.springframework.beans.factory.config.DependencyDescriptor.resolveNotUnique(DependencyDescriptor.java:220)at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1369)at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311)at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887)at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)... 90 more
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Init()을 static으로 선언해 주신 이유가 있을까요?
Init()을 static으로 선언해 주신 이유가 있을까요?
-
해결됨따라하며 배우는 리액트 테스트 [2023.11 업데이트]
Type.test.js파일에 궁금한점이 생겼습니다
강사님 안녕하세요 ~~ 늘 잘 듣고 있습니다.복습을 하다 궁금한점이 생겼는데요!Type.test.js에서 Products컴포넌트의 img태그를 변수 productImages로 집어주신걸 보았습니다. 근데 img태그는 Type.js가 아닌 Products.js에 있는건데,그렇담 Products.test.js 파일을 따로만들어 테스트를 해야하는것이 아닌가 하는 궁금증이 생겼습니다.그냥 Type페이지에 Products 컴포넌트가 들어있기 때문에 Type.test.js에 사용한건가요?test("displays product images from server", async () => { render(<Type orderType="products" />); const productImages = await screen.findAllByRole("img", { name: /product$/i, }); expect(productImages).toHaveLength(2); const altText = productImages.map((element) => element.alt); expect(altText).toEqual(["America product", "England product"]); });