Document repl test workflow as a followup to #9372

Also organized unit test sections more
This commit is contained in:
Gabriel Horner
2023-05-16 14:25:26 -04:00
parent f8cc599625
commit 8fca36629f

View File

@@ -139,7 +139,17 @@ By convention, a namespace's tests are found at a corresponding namespace
of the same name with an added `-test` suffix. For example, tests
for `frontend.db.model` are found in `frontend.db.model-test`.
There are a couple different ways to develop with tests:
There are a couple different ways to run tests:
* [Focus tests](#focus-tests) - Run one or more tests from the CLI
* [Autorun tests](#autorun-tests) - Autorun tests from the CLI
* [Repl tests](#repl-tests) - Run tests from REPL
There a couple types of tests and they can overlap with each other:
* [Database tests](#database-tests) - Tests that involve a datascript DB.
* [Performance tests](#performance-tests) - Tests that aim to measure and enforce a performance characteristic.
* [Async tests](#async-tests) - Tests that run async code and require some helpers.
#### Focus Tests
@@ -166,6 +176,15 @@ To run tests automatically on file save, run `clojure -M:test watch test
the `:ns-regexp` option e.g. `clojure -M:test watch test --config-merge
'{:autorun true :ns-regexp "frontend.util.page-property-test"}'`.
#### REPL tests
Most unit tests e.g. ones that are browser compatible and don't require node libraries, can be run from the REPL. To do so:
* Start a REPL for your editor. See [here for an example](https://github.com/logseq/logseq/blob/master/docs/develop-logseq.md#repl-setup).
* Load a test namespace.
* Run `(cljs.test/run-tests)` to run tests for the current test namespace.
#### Database tests
To write a test that uses a datascript db:
@@ -188,7 +207,7 @@ To write a performance test:
For examples of these tests, see `frontend.db.query-dsl-test` and `frontend.db.model-test`.
### Async Unit Testing
#### Async Tests
Async unit testing is well supported in ClojureScript.
https://clojurescript.org/tools/testing#async-testing is a good guide for how to