Skip to content

michaelst/injexor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Injexor

Injexor provides an easy way to replace modules based on behaviours for mocking during tests or stubbing in another module based on config for different environments.

See the docs for full instructions: https://hexdocs.pm/injexor

Installation

The package can be installed by adding injexor to your list of dependencies in mix.exs:

def deps do
  [
    {:injexor, "~> 1.0.0"}
  ]
end

Example test configuration:

  • test.exs

    config :injexor, default: Mock # adds Mock on the end of all modules by default
    
    # or you can alternatively register injects manually
    config :injexor, MyApp.MyBehaviour, inject: MyApp.Mock
  • test_helper.exs

    Hammox.defmock(MyApp.Mock, for: MyApp.MyBehaviour)
  • lib/my_app.ex

    defmodule MyApp do
      @behaviour MyApp.MyBehaviour
    
      def deploy_context() do
        Application.fetch_env!(:my_app, :deploy_context)
      end
    end
  • lib/my_app/my_behaviour.ex

    defmodule  MyApp.MyBehaviour do
      @callback deploy_context() :: atom()
    end
  • lib/my_app/module.ex

    defmodule MyApp.Module do
      use Injexor, inject: [MyApp]
    
      def my_function do
        # you can now use mox/hammox to stub/expect this function to test the different paths
        if MyApp.deploy_context() == "production" do
          # do something
        else
          # do something else
        end
      end
    end

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages