Проблема заключается в том, что в целях тестирования все тесты заключены в транзакцию, поэтому их можно откатить, чтобы вы не загрязняли базу данных тоннами старых тестовых данных. Это может привести к сбоям, которые должны были пройти, и проходам, которые должны были пройти не в зависимости от того, как вы написали свои тесты.
Вы можете обойти это, но это, опять же, загрязнит вашу тестовую базу данных, и вам придется очистить ее самостоятельно:
setup do
[Other set up stuff]
Ecto.Adapters.SQL.Sandbox.checkin(MyApp.Repo) #This closes any open transaction, effectively.
Ecto.Adapters.SQL.Sandbox.checkout(MyApp.Repo, [sandbox: false]) # This opens a new transaction without sandboxing.
end
Эта задача установки входит в тестовый файл с вашими неудачными тестами, если у вас нет настройки. Если вы не сделаете вызов checkin
, вы (скорее всего) получите ошибку о других запросах, выполняемых до того, как вы задали уровень транзакции, потому что вы вставляете что-то перед тестом.
См. здесь , где кто-то, по сути, вызывает ту же проблему.