运行服务层方法测试时抛出ResourceNotFoundException
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运行服务层方法测试时抛出ResourceNotFoundException相关的知识,希望对你有一定的参考价值。
我正在使用Spring Boot,我正在尝试创建一个测试。
其实我的考试班:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)
public class MemberServiceImplTest {
@InjectMocks
MemberServiceImpl memberService;
@Mock
MemberRepository memberRepository;
@Mock
Member member;
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}
@Test
public void getMemberId() {
Long memberId = 1l;
Member member = new Member();
...
Mockito.when(memberRepository.findOne(memberId)).thenReturn(member);
MemberDto memberDto = memberService.getMemberById(memberId);
...
}
在我的memberService
类和getMemberById
方法中,我调用了findOne
类的memberRepository
方法。如果没有找到成员,则抛出ResourceNotFoundException
异常。
我不明白为什么我会收到这个错误。我没有使用正确的注释吗?
很难说清楚,因为我不能只复制并粘贴所有代码进行调试,但我相信你没有正确初始化模拟。尝试添加以下方法:
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
而不是这个
@RunWith(SpringRunner.class)@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
使用这个@RunWith(MockitoJUnitRunner.class)
如果Mockito没有找到你传递的任何资源,它会自动抛出ResourceNotFoundException
。
因为在Mockito.when(memberRepository.findOne(memberId)).thenReturn(member);
行中你正在为所提到的memberId写作,所以应该返回特定的member
。
但实际上,当你调用方法时,member
对象不是他们的,所以Mockito抛出ResourceNotFoundException
。
你必须使用@Test(expected = ResourceNotFoundException.class)
。
以上是关于运行服务层方法测试时抛出ResourceNotFoundException的主要内容,如果未能解决你的问题,请参考以下文章
当我运行测试用例时,实体管理器已成功注入,但在运行 Web 应用程序时抛出 NullPointerException
Espresso 在云中的设备上运行时抛出“在视图中执行“单击”时出错”,但相同的测试在本地成功运行