kaocha icon indicating copy to clipboard operation
kaocha copied to clipboard

[enhancement] global fixtures

Open sirmspencer opened this issue 2 years ago • 3 comments

Here is a good write up of the problem https://stackoverflow.com/questions/43585325/clojure-test-global-fixtures.

TLDR is that things like connecting to a DB are slow and we don't want to do it for every namespace.

An alternative tool, circleci.test has added support for this. https://github.com/circleci/circleci.test#global-fixtures

Is there any plan to add something like this for koacha?

sirmspencer avatar Apr 14 '23 21:04 sirmspencer

Use the hooks plugin, this is the kind of thing it's there for.

plexus avatar May 31 '23 12:05 plexus

I think we can convert this to a documentation issue—we've decided against adding global hooks, here's how we suggest using hooks in place of global fixtures, here's an example, etc.

In theory, you wouldn't need to use hooks at all, you could have a test namespace that declares a var with delay.


(def test-db (delay (let [db-params {:connection-uri "sqlite:////memory"}]
                               ;steps to set up database      
db-params)))

;In a test namespace:
(deftest some-db-test
   (testing insert-something 
           (jdbc/insert! @test-db ,,,)))

alysbrooks avatar May 31 '23 21:05 alysbrooks

It might also be good to document this pattern in conjunction with our forthcoming parallel execution support. If namespaces are creating things that should only be accessed by one thread at a time, it could cause issues.

alysbrooks avatar May 31 '23 21:05 alysbrooks