Вызов функции из класса Test не работает Mockito - PullRequest
0 голосов
/ 12 ноября 2018

Здравствуйте, у меня есть тестовый класс с именем UserServiceTest, который содержит класс userService, который внедряется с помощью вышеуказанных макетов, и тесты в этом тестовом классе работают нормально.

@RunWith(MockitoJUnitRunner::class)
class UserServiceTest {

lateinit var login: Login

@Mock
lateinit var userRepository: UserRepository

@Mock
lateinit var emailService: EmailService

@InjectMocks
lateinit var userService: UserService

@Before
fun setup() {
    login = Login(email = "mohanraj@gmail.com", password = "qwerty"
}

И у меня есть другой тестовый класс с именем AdminServiceTests, которыйсодержит AdminServiceClass, который внедряется с помощью вышеуказанных макетов, который также состоит из класса userService

@RunWith(MockitoJUnitRunner::class)
class AdminServiceTests {

lateinit var user: User

@Mock
lateinit var userRepository: UserRepository

@Mock
lateinit var adminRepository: AdminRepository

@Mock
lateinit var userService: UserService

@InjectMocks
lateinit var adminService: AdminService

@Before
fun setup() {

    this.createAdmin = CreateAdmin().apply {
        email = "admin@gmail.com"
        name = "admin"
        password = "qwerty"
        phone = 98345678899
    }
}

@Test
fun testCreateAdmin() {

    val result = adminService.createAdmin(createAdmin)
    Assert.assertEquals(true, result)
}

Когда я запускаю тест, adminService.createAdmin (createAdmin) вызывает функцию в adminService, которая вызывает функцию в userService

fun createAdmin(newUser: CreateAdmin): Boolean {
    val user = userService.getUser(newUser)

    if (userService.createUser(user)) { // calls a function in user service
        this.saveAdmin(user.id)

        return true
    }

    return false
}

Я хочу вызвать функцию в userService из функции testCreateAdmin, но служба пользователя, которую я включил как @Mock, содержит некоторые зависимости для себя и это зависимость для adminService, поэтому при отладке @Ложный объект userService содержит ноль, поэтому функция в userService не вызывается.так как внедрить зависимости в userService и внедрить его в adminService .. Пожалуйста, помогите

userService = {UserService$MockitoMock$825690330@2479}
mockitoInterceptor = {MockMethodInterceptor@2532} 
userRepository = null
emailService = null

1 Ответ

0 голосов
/ 12 ноября 2018

В вашем testCreateAdmin() вы должны высмеивать поведение userService методов.По умолчанию немодулированные методы возвращают null.

Это должно выглядеть так, с mockito-kotlin.

@Test
fun testCreateAdmin() {
  val admin = mock<User>() {
    on { id } doReturn "id"
  }
  whenever(userService.getUser(createAdmin)).doReturn(admin)
  whenever(userService.createUser(admin)).doReturn(true)

  val result = adminService.createAdmin(createAdmin)

  Assert.assertEquals(true, result)
  verify(userService).saveAdmin("id")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...