Hi Michael

I've written a tiny lib for this -> https://github.com/lpil/temporary-env

Perhaps you might find this useful :)

Cheers,
Louis

On Fri, 26 Jan 2018, 14:24 Michael Schaefermeyer, <
michael.schaeferme...@gmail.com> wrote:

> Hey all,
>
> I regularly find myself changing the Application configuration in tests to
> temporarily adjust a setting (i.e. when using Bypass and changing the
> configured endpoint for HTTP requests).
>
> My current workflow looks as follows:
>
> test "something" do
>   old_env = Application.get_env(:app, Module)
>   new_env = Keyword.put(old_env, :key, value)
>
>   Application.put_env(:app, Module, new_env)
>
>   # Do something that reads the config
>   Application.put_env(:app, Module, old_env)
> end
>
> Besides being quite repetitive it disallows async tests, as another test
> might be reading from the Application environment while this test is
> running.
>
> Ideally, ExUnit would allow me to temporarily change the Application
> environment in a async-safe way:
>
> test "something" do
>   with_application_env :app, Module, fn(config) -> Keyword.put(config, :
> key, value), fn ->
>     # Do something that reads the config
>   end
> end
>
> Of course I could make the configuration module configurable and use
> something other than Application. The reason I am still suggesting this is
> that I feel like configuring your app via Application is still the way to
> go and I wouldn't want to diverge from that standard just for tests.
>
> Hope that makes sense. I would love to hear your thoughts.
>
> Thanks,
> Michael
>
> --
> You received this message because you are subscribed to the Google Groups
> "elixir-lang-core" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to elixir-lang-core+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/elixir-lang-core/4b863c84-2062-42f3-b0a0-92b1d122f40c%40googlegroups.com
> <https://groups.google.com/d/msgid/elixir-lang-core/4b863c84-2062-42f3-b0a0-92b1d122f40c%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/CABu8xFDWPftNWFJGeRNXRsXRNXXL7NjKxEKkLn%3DtcnrFqchjRw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to