SArthur
Test database vs. dev database when connecting Livebook notebook to local app
I am in love with Livebook! My hope is to use it for everything from data exploration and feature planning, documentation, and TDD in a cohesive way… amazing if it comes together!
On the TDD front, I have successfully connected a livebook notebook to my local app and am able to run basic tests. However, I’m stumped trying to test data creation. The snippet below worked the first time this was run (without the ref to the DataCase), but then fails thereafter because the original record is not being deleted after the test as happens with mix test. I tried adding the use DataCase line, but that results in the compile error below. Is this possible and can someone point me to any documentation to assist?
Many thanks in advance!
ExUnit.start(autorun: false)
defmodule MyTest do
use ExUnit.Case, async: true
# Everything above is boiler plate for livebook testing
use myApp.DataCase
alias myApp.Members
alias myApp.Members.Member
test "creates new Member with valid attrs and sets member_uuid" do
assert {:ok, %Member{member_uuid: member_uuid}} =
Members.create_member(%{name: "New Member", member_type: "foe", collapsed_name: "newmember"})
refute nil == member_uuid
end
end
# run below is boiler plate for livebook testing
ExUnit.run()
** (CompileError) priv/livebook/Adventures_in_testing.livemd#cell:6: module PreOrderApp.DataCase is not > loaded and could not be found
(elixir 1.13.2) expanding macro: Kernel.use/1
priv/livebook/Adventures_in_testing.livemd#cell:6: MyTest (module)
Trending in Questions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #elixirconf-us
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #performance
- #security










First 4 of 4 Posts
moogle19
Your
mix.exsfile probably contains the following lines:so the
"test/support"folder which contains yourDataCaseisn’t compiled in the default env for the notebook (which is:dev).But I think there is currently no way to set the
MIX_ENVbefore attaching to the notebook.You could add:
above
elixirc_paths(_)to compile thetest/supportfiles also in:dev.SArthur
Hi - I am so sorry about not responding to this. I missed the reply entirely. I’m buried with another item that I just posted on, but will circle back to this when I have some breathing room. I loved the idea of embedding tests rather than iex examples in the docs.
Cheers
Nezteb
I usually have an easier time running my app first via
iex -S mixwith a short name and cookie. After that you can configure Livebook to connect to your newly spawnediexprocess/node, as described in this blog post:Here’s a similar thread on it as well:
Once that’s set up, all of your application code (including your
use myApp.DataCase) should be mostly usable from Livebook.Nezteb
Funnily enough I ran into this issue again, and my previous answer was close, but what I ended up doing is something like this:
The
MIX_ENV=testpart is what I was missing last time. Livebook itself doesn’t need to run in test mode as long as you are using “Attached node” mode and connecting to your localiexsessions which is running withMIX_ENV=test.Connect to the node in Livebook and then try something like this:
Example evaluation: