junit 在Spring中模拟仓库以测试服务

zvokhttg  于 2022-11-11  发布在  Spring
关注(0)|答案(3)|浏览(177)

我在尝试模拟存储库以在Spring-Boot中对我的服务进行单元测试后出现了一些故障。

@ExtendWith(SpringExtension.class)
@ExtendWith(MockitoExtension.class)
@SpringBootTest
@ActiveProfiles("test")
public class UserTest{

    @InjectMocks
    private UserServiceImpl userService;

    @Mock
    private UserRepostiory userRepository;

    @Before
    public void setUp() {
       User user = new User(1L, "email@email", "name");
        when(userRepostitory.findById(1L)).thenReturn(Optional.of(user));
    }

    @Test
    public void findUserByIdReturnsUser() {

        User user = userService.getById(1L); => always throws error in Service, that no User is found with that Id, it calls the regular Repository: mock does nothing
        assertEquals(1L,user.getId());

    }
}

但是当服务调用repo时,我从来没有得到返回的用户。我对单元测试有点陌生,我很确定,我在这里错过了一些东西。

omhiaaxx

omhiaaxx1#

在设置中,您可以:

when(userRepostitory.findById(1L)).thenReturn(Optional.of(user));

但在你所谓的考验中

User user = userService.getById(1L);

模拟getById或调用findById

2cmtqfgy

2cmtqfgy2#

“存储库”|“存储库”看起来像是一个打字错误。

bxgwgixi

bxgwgixi3#

使用@RunWith(SpringRunner.class)注解测试类

相关问题