This namespace builds upon the React Testing Library to enable unit tests of the functinality of Reacl-c items.
The basic functionality is that you render your item to the DOM in a certain state, check that certain elements are there, maybe simulate user interactions with it and check again:
(dt/rendering
(dom/button {:onClick (fn [st _] (* 2 st))} "Button")
:state 42
(fn [env]
(is (some? (dt/query env (dt/by-text "Button"))))
(dt/fire-event (dt/get env (dt/by-text "Button")) :click)
(is (= 84 (dt/current-state env)))))
You can also interact with the item via
messages (send-message!), and check for the actions it
emits (queue-actions and pop-action!).
If your item has an asynchronous behaviour, e.g. starts a timeout
before it changes its contents you can make your test asynchronous
as well by using promises. Functions that are labelled asynchronous
here, for example find, do return a promise. The
library cljs-async can
be handy to write asynchronous tests.
This namespace builds upon the [React Testing
Library](https://testing-library.com/docs/react-testing-library/intro/)
to enable unit tests of the functinality of Reacl-c items.
The basic functionality is that you render your item to the DOM in a
certain state, check that certain elements are there, maybe simulate
user interactions with it and check again:
```
(dt/rendering
(dom/button {:onClick (fn [st _] (* 2 st))} "Button")
:state 42
(fn [env]
(is (some? (dt/query env (dt/by-text "Button"))))
(dt/fire-event (dt/get env (dt/by-text "Button")) :click)
(is (= 84 (dt/current-state env)))))
```
You can also interact with the item via
messages ([[send-message!]]), and check for the actions it
emits ([[queue-actions]] and [[pop-action!]]).
If your item has an asynchronous behaviour, e.g. starts a timeout
before it changes its contents you can make your test asynchronous
as well by using promises. Functions that are labelled asynchronous
here, for example [[find]], do return a promise. The
library [cljs-async](https://github.com/active-group/cljs-async) can
be handy to write asynchronous tests.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |