Невозможно смоделировать сгенерированные HugSQL функции базы данных с Midje - PullRequest
0 голосов
/ 13 февраля 2019

У меня проблема с имитацией функций доступа к базе данных, сгенерированных из шаблонов HugSQL, с помощью вспомогательной библиотеки Conman.Эти функции определяются во время выполнения следующим образом:

(conman/bind-connection *db* file)

В моем случае я тестирую эту сервисную функцию модульно:

(defn create-user [user]
  (do (-> user
          (password-service/assoc-salt-and-hash)
          (dissoc :password)
          (assoc :is-admin false)
          (db/create-user!))
      (select-keys user [:firstname :lastname :email])))

В которой *Функция 1009 * сгенерирована Конманом.Однако, когда я пытаюсь смоделировать эту функцию с помощью этого теста Midje, я получаю следующее сообщение об ошибке:

(fact "calls db function with created password fields and without plaintext password"
               (create-user user) => (select-keys user [:firstname :lastname :email])
               (provided
                 (password/assoc-salt-and-hash (as-checker (contains user))) => (merge user salt-and-hash)
                 (db/create-user! (as-checker (contains user-to-db))) => user-to-db))
FAIL at (user.clj:24)
You never said #'create-user! would be called with these arguments:
    [{:firstname "asd", :lastname "lol", :email "email@email.com", :password-salt #object["[B" 0x5074bde0 "[B@5074bde0"], :password-hash #object["[B" 0x60f8a634 "[B@60f8a634"], :is-admin false}]

FAIL at (user.clj:25)
These calls were not made the right number of times:
    (db/create-user! (as-checker (contains user-to-db))) [expected at least once, actually never called]
nil
FAILURE: 2 checks failed.  (But 1 succeeded.)
[Completed at 20:27:05]

Я ссылаюсь на динамически создаваемую и смоделированную функцию точно так же, как всервис и тест, но midje не распознает его как одну и ту же функцию.Я также пытался ссылаться на функцию через var (#'musician.user.db/create-user!) и использовать полный путь musician.user.db/create-user! как из службы, так и из теста, но ни одна из них не работала.Служебный код работает при тестировании из REST API и REPL, я просто не могу настроить этот тест.

Кажется, проблема в том, что midje не может смоделировать функцию, поскольку это не так.известен до выполнения.Это просто проблема правильной ссылки на функцию или просто невозможно смоделировать эти функции с помощью Midje?

...