Я новичок в scalatest и scalamock, но мне удалось написать несколько тестов. Однако, когда использование Futures в моих тестах (насмешливые результаты возврата и сами классы), тесты, похоже, не проходят.Scalatest и scalamock, тесты не проходят при использовании фьючерсов
Я написал минимальный рабочий пример, размещенный на github. Есть две ветки: «мастер» включает фьючерсы, а «withNoFutures» - нет.
Я выполнял тесты на обеих ветвях несколько раз, и тесты в «master» проходят иногда, тесты в «withNoFutures» всегда проходят. Может ли кто-нибудь помочь мне пройти тесты с прохождением фьючерсов?
Github репозиторий https://github.com/vicaba/scalatestNotWorking/tree/master
Неисправное тестирование кода выглядит следующим образом:
package example
import org.scalamock.scalatest.MockFactory
import org.scalatest.{BeforeAndAfter, FunSuite}
import scala.concurrent.Future
class SomeServiceTest extends FunSuite with BeforeAndAfter with MockFactory {
var otherService: SomeOtherService = _
var service: SomeService = _
before {
otherService = mock[SomeOtherService]
service = mock[SomeService]
}
after {
otherService = null
service = null
}
test("a first test works") {
otherService.execute _ expects() once()
service.execute _ expects(*) returning Future.successful(true) once()
SomeService.execute(service, otherService)
}
// Why this test does not work?
test("a second test works") {
// Copy paste the code in the first test
}
}
Если изменить код, чтобы возвращать только логическое значение (изменение соответствующих реализованных классов), все работает отлично. В противном случае результат undeterministic