Size: a a a

2019 September 06

JM

Janibek Marshal in Android KZ
Daniyar Amangeldy
Я так и не понял Джейка 😁
Он говорит, что такие вызовы Mockito, как whenever(object.fun).thenReturn(value) является прямым следствием тесты ради тестов. Лучше готовить тестовые данные и использовать их вместо этого
источник

DA

Daniyar Amangeldy in Android KZ
а в этот самый value разве не тестовые данные кидаешь?
источник

JM

Janibek Marshal in Android KZ
Daniyar Amangeldy
а в этот самый value разве не тестовые данные кидаешь?
Ты в этом случае сам готовишь левые модельки
источник

JM

Janibek Marshal in Android KZ
А лучше создать реализацию interface, в котором будут как раз таки in-memory database и тд
источник

JM

Janibek Marshal in Android KZ
Janibek Marshal
А лучше создать реализацию interface, в котором будут как раз таки in-memory database и тд
Есть допустим interface
interface A { fun foo(): B }


В случае с Mockito

class Test {
  private val a: A = mock()
  @Test fun test() {
     val bar = Bar()
     whenever(a.foo()).thenReturn(bar) //
  }
}


Жаке говорит лучше так
class StubA : A {
  override fun foo() = Bar()
}

class Test {
  private val a: A = StubA()
  @Test fun test() {
     ...
  }
}
источник

DA

Daniyar Amangeldy in Android KZ
Руками моки писать что ле?)
источник

VT

Vladimir Tokarev in Android KZ
Janibek Marshal
А лучше создать реализацию interface, в котором будут как раз таки in-memory database и тд
+++
источник

VT

Vladimir Tokarev in Android KZ
Daniyar Amangeldy
Руками моки писать что ле?)
Фейкаешь возвращаемые значения, либо Unit и радуешься жизни
источник

JM

Janibek Marshal in Android KZ
Daniyar Amangeldy
Руками моки писать что ле?)
Ну там вместо реализации можно поднять уже in-memory реализацию базы
Я обычно закидываю json ответы каждого кейсам и загружаю их с test/resource папку
источник

DA

Daniyar Amangeldy in Android KZ
Janibek Marshal
Ну там вместо реализации можно поднять уже in-memory реализацию базы
Я обычно закидываю json ответы каждого кейсам и загружаю их с test/resource папку
Это blackbox тест обычный?
источник

JM

Janibek Marshal in Android KZ
Daniyar Amangeldy
Это blackbox тест обычный?
Вроде нет, ты же знаешь тип загружаемых данных
источник

DA

Daniyar Amangeldy in Android KZ
Явные методы, которые будет использовать repository
источник

DA

Daniyar Amangeldy in Android KZ
Незнаю, так как ты это не мокаешь
источник

DA

Daniyar Amangeldy in Android KZ
Представляешь фейковый сервер
источник

JM

Janibek Marshal in Android KZ
Daniyar Amangeldy
Представляешь фейковый сервер
Но ты поднимаешь тестовый фейковый сервер того, что ты хочешь для тестирования
Тот же BFF поднимаем локально в JVM и можно возвращать готовые модельки для тестирования без Mock
источник

DA

Daniyar Amangeldy in Android KZ
И все равно незнаешь явно, какие методы вызваются)
источник

JM

Janibek Marshal in Android KZ
Daniyar Amangeldy
И все равно незнаешь явно, какие методы вызваются)
В моем понимании, в данном реализации я знаю какие модельки загружаются с фейк data source. Черный ящик же в том случае, если ты не знаешь что в внутри происходит
источник

JM

Janibek Marshal in Android KZ
Ладно, тут уже странный холивар пошел )
источник

DA

Daniyar Amangeldy in Android KZ
😂
источник
2019 September 07

i

ildar.i [Almaty] in Android KZ
Что конкретно Жаке имел в виду мне тоже до конца не понятно, но сам мокинг - это tight coupling с тем, что ты мокаешь. Даже статья есть: https://medium.com/javascript-scene/mocking-is-a-code-smell-944a70c90a6a
источник