Not using Mix test

Does it okay if I never use mix test?

I am currently developing app but never try to use mix test, because some of code I made custom in lib folder, sometime when i try make account like mix phx.gen.auth Accounts User users, i try to made custom in the code. but when try make mix test some failure comes in like below :

  1) test confirm email does not update email with invalid token (TrainWeb.UserSettingsLiveTest)
     test/train_web/live/user_settings_live_test.exs:192
     match (=) failed
     code:  assert {:live_redirect, %{to: path, flash: flash}} = redirect
     left:  {:live_redirect, %{flash: flash, to: path}}
     right: {
              :redirect,
              %{
                flash: %{"error" => "You must activated via link activation that send it into your mail to access this page."},
                to: "/users/log_in"
              }
            }
     stacktrace:
       test/train_web/live/user_settings_live_test.exs:194: (test)



  2) test update email form renders errors with invalid data (phx-submit) (TrainWeb.UserSettingsLiveTest)
     test/train_web/live/user_settings_live_test.exs:68
     ** (MatchError) no match of right hand side value: {:error, {:redirect, %{to: "/users/log_in", flash: %{"error" => "You must activated via link activation that send it into your mail to access this page."}}}}
     code: {:ok, lv, _html} = live(conn, ~p"/users/settings")
     stacktrace:
       test/train_web/live/user_settings_live_test.exs:69: (test)



  3) test Settings page renders settings page (TrainWeb.UserSettingsLiveTest)
     test/train_web/live/user_settings_live_test.exs:9
     ** (MatchError) no match of right hand side value: {:error, {:redirect, %{to: "/users/log_in", flash: %{"error" => "You must activated via link activation that send it into your mail to access this page."}}}}
     code: {:ok, _lv, html} =
     stacktrace:
       test/train_web/live/user_settings_live_test.exs:10: (test)

.

  4) test update email form updates the user email (TrainWeb.UserSettingsLiveTest)
     test/train_web/live/user_settings_live_test.exs:35
     ** (MatchError) no match of right hand side value: {:error, {:redirect, %{to: "/users/log_in", flash: %{"error" => "You must activated via link activation that send it into your mail to access this page."}}}}
     code: {:ok, lv, _html} = live(conn, ~p"/users/settings")
     stacktrace:
       test/train_web/live/user_settings_live_test.exs:38: (test)

.

  5) test update email form renders errors with invalid data (phx-change) (TrainWeb.UserSettingsLiveTest)
     test/train_web/live/user_settings_live_test.exs:52
     ** (MatchError) no match of right hand side value: {:error, {:redirect, %{to: "/users/log_in", flash: %{"error" => "You must activated via link activation that send it into your mail to access this page."}}}}
     code: {:ok, lv, _html} = live(conn, ~p"/users/settings")
     stacktrace:
       test/train_web/live/user_settings_live_test.exs:53: (test)

...

  6) test update password form renders errors with invalid data (phx-change) (TrainWeb.UserSettingsLiveTest)
     test/train_web/live/user_settings_live_test.exs:121
     ** (MatchError) no match of right hand side value: {:error, {:redirect, %{to: "/users/log_in", flash: %{"error" => "You must activated via link activation that send it into your mail to access this page."}}}}
     code: {:ok, lv, _html} = live(conn, ~p"/users/settings")
     stacktrace:
       test/train_web/live/user_settings_live_test.exs:122: (test)

.

  7) test confirm email updates the user email once (TrainWeb.UserSettingsLiveTest)
     test/train_web/live/user_settings_live_test.exs:174
     match (=) failed
     code:  assert {:live_redirect, %{to: path, flash: flash}} = redirect
     left:  {:live_redirect, %{flash: flash, to: path}}
     right: {
              :redirect,
              %{
                flash: %{"error" => "You must activated via link activation that send it into your mail to access this page."},
                to: "/users/log_in"
              }
            }
     stacktrace:
       test/train_web/live/user_settings_live_test.exs:177: (test)

...

  8) test update password form renders errors with invalid data (phx-submit) (TrainWeb.UserSettingsLiveTest)
     test/train_web/live/user_settings_live_test.exs:140
     ** (MatchError) no match of right hand side value: {:error, {:redirect, %{to: "/users/log_in", flash: %{"error" => "You must activated via link activation that send it into your mail to access this page."}}}}
     code: {:ok, lv, _html} = live(conn, ~p"/users/settings")
     stacktrace:
       test/train_web/live/user_settings_live_test.exs:141: (test)

.

  9) test update password form updates the user password (TrainWeb.UserSettingsLiveTest)
     test/train_web/live/user_settings_live_test.exs:92
     ** (MatchError) no match of right hand side value: {:error, {:redirect, %{to: "/users/log_in", flash: %{"error" => "You must activated via link activation that send it into your mail to access this page."}}}}
     code: {:ok, lv, _html} = live(conn, ~p"/users/settings")
     stacktrace:
       test/train_web/live/user_settings_live_test.exs:95: (test)

Maybe, I don’t understand what are you asking.

If you don’t want to write test, you can avoid to run mix test.
The failing tests that you are showing have a pretty clear error message and should be easy to fix them in you want.

Try to explain better your problem. Thank you.

2 Likes

When you generate anything with Phoenix, it generates code in lib and tests for that code in test. Naturally, changing the code will cause tests relying on that code to fail. Update your tests or, if you must, delete the failing tests so that at least the remaining ones can be useful.

1 Like

Tests are written so you’re sure you’re delivering working code. If you’re one of the gods who know their code works without tests then don’t run them.

1 Like

Working code is optional, getting paid is the important part :joy: .

2 Likes

Don’t forget that not everyone is coding for professional reasons. Also automated tests are not the only form of testing. So even with automated tests being a useful tool they’re by no means generally required.

To answer the question though: Yes phoenix cannot automatically adjust tests to take authentication into account, given it has no idea about what content should require authentication or not. Therefore adjusting the automatically generated tests for those additional concerns is required.

5 Likes

Even in hobby code at one point you want to make sure the thing works, no? Manual testing does not scale.

1 Like

I mean I don’t disagree, but on the other hand it depends on the context. I’ve for a long time worked on a project, which had (and still has) not much time sensitivity and also not much scale. For quite a bit in the beginning this ran on a system without automated tests (a constraint of the underlying architecture). It wasn’t great, but it also wasn’t too bad. It at least was better than the manual stuff it had replaced. Eventually we switched architecture (to elixir).

So for sure there are many ways where skipping testing can turn on you, but I try to not discredit other paths.

2 Likes

I didn’t intend to discredit it, sorry if it sounded that way.


And, as I work for a telecom nowadays I get it that not everything can be neatly put into automated tests indeed. Or stuff like Nerves[-like] environments where you actually have to send physical signals – another valid use-case.

So yeah I don’t disagree with you either, it’s just that I’d always default to automated tests if the environment allows for it. If for no any other reason than this one: from one point and on I want to progress and automated tests give you confidence that you at least didn’t break what was working before.

2 Likes