Я уверен, что мне здесь не хватает чего-то действительно глупого очевидного - у меня есть модульный тест для очень простой настройки Slick 3.2. DAO имеет следующие основные методы извлечения и вставки:
override def questions: Future[Seq[Tables.QuestionRow]] =
db.run(Question.result)
override def createQuestion(title: String, body: String, authorUuid: UUID): Future[Long] =
db.run(Question returning Question.map(_.id) += QuestionRow(0l, UUID.randomUUID().toString, title, body, authorUuid.toString))
И у меня есть несколько модульных тестов - для тестов, которые я использую в памяти H2, и у меня есть скрипт установки (переданный в jdbcurl) для инициализации двух базовых строк в таблице.
Модульные тесты для извлечения работают нормально, и они выбирают две строки, вставленные сценарием инициализации, и я только что добавил простой модульный тест, чтобы создать строку, а затем получить их все - при условии, что он извлечет три строки, но независимо от того, что я делаю, он извлекает только первые два:
it should "create a new question" in {
whenReady(questionDao.createQuestion("Question three", "some body", UUID.randomUUID)) { s =>
whenReady(questionDao.questions(s)) { q =>
println(s)
println(q.map(_.title))
assert(true)
}
}
}
Вывод показывает, что исходный s
(возвращающий идентификатор из автоинкена) равен 3, как я и ожидал (я также пробовал вставку, не делая шаг возврата и просто позволяя ей вернуть количество вставленных строк, который возвращает 1 (как expecteD), но, глядя на значения, возвращенные в q
, это только первые две строки, вставленные скриптом инициализации.
Чего мне не хватает?