Я пытаюсь написать модульный тест Scala с использованием Mockito для метода doSomeBusinessLogic, найденного в следующем классе:
@Service
public class HotelsService {
private final HotelsServiceInt hotelsServiceInt;
public HotelsService(HotelsServiceInt hotelsServiceInt) {
this.hotelsServiceInt = hotelsServiceInt;
}
public List<String> getHotels(long val1, long val2) {
return hotelsServiceInt.getHotels(val1, val2)
}
public boolean doSomeBusinessLogic(long val1, long val2) {
List<String> hotels = getHotels(val1, val2);
// Do some logic and return true or false
}
А вот интерфейс:
public interface HotelsServiceInt {
@GET("/{val1}/{val2}")
Observable<List<String>> getHotels(
@Path("val1") long val1,
@Path("val2") long val2);
}
Вот тест Scala, я написал для него:
import org.mockito._
import org.scalamock.scalatest.MockFactory
import org.scalatest.{BeforeAndAfter, FunSpec}
import org.mockito.Mockito._
class Spec extends FunSpec with MockFactory with BeforeAndAfter {
@InjectMocks
var hotelsServiceInjectedMock: HotelsService = _
@Mock
var hotelsService: HotelsService = _
before{
hotelsServiceInjectedMock = new HotelsService(hotelsServiceInt)
MockitoAnnotations.initMocks(this)
}
describe("Test") {
it("Should return false.") {
val val1 = 1l
val val2 = 2l
list = new ArrayList()
list.add("Hitlon")
list.add("Sheraton")
list.add("Rotana")
doReturn(list).when(hotelsService).getHotels(
Matchers.any(), Matchers.any())
val result = hotelsServiceInjectedMock.doSomeBusinessLogic(val1, val2)
assert(result == false)
}}
}
Однако отладка приведенного выше теста показывает, что на самом деле вызывается List<String> hotels = getHotels(val1, val2);
.
Есть ли способ выполнить код «doSomeBusinessLogic», но при этом имитировать результат метода «getHotels»?
MockFactory
, это ScalaMock? Похоже, вы смешиваете здесь несколько насмешливых фреймворков. - person Alex Savitsky   schedule 15.05.2018MockitoAnnotations
?@InjectMocks
?@Mock
?). Если вы хотите, чтобы люди помогали вам, не ждите, что они прочитают ваши мысли. Во-вторых, вы, кажется, используете здесь несколько насмешливых фреймворков. Макеты, инициализированные с помощью одного фреймворка, не будут работать при вызове из другого фреймворка. - person Alex Savitsky   schedule 15.05.2018