# Hassle free Testing Elixir modules in iEx shell

While working on Elixir project, we often test our functions or modules code in `iex` shell. Whatever change we make in our code, we fire `iex -S mix` command and all of our project modules are accessible in shell. 
Suppose, we have a module say `Calculator` which is nested under project `mathematics` directory . As per Elixir naming convention we are going to name that module as `Mathematics.Calculator`. We also implemented some function say `square` in this module. 
```elixir
defmodule Mathematics.Calculator do
  def square(number) do
    number*number
  end
end
```
For testing this `square` function we fire up `iex` shell. In Elixir, we have concept of `alias` using it we can avoid writing long module name. Using `alias` we can avoid `Mathematics.Calculator`, instead we can only use last word i.e `Calculator`. Refer example below.

```
> alias Mathematics.Calculator
> Calculator.square(2)
#=> 4
```
This looks fine but what if we add some more modules with deep level nesting modules say `Mathematics.Logirithmic.LogCalculator`. It becomes very cumbersome to alias these long named modules every-time we fire `iex` shell. 

#### Solution :
Create a file `.iex.exs` at root level of your Elixir project directory. Add all the frequently used or long named alias in the file.

```iex.exs
alias Mathematics.Calculator
alias Mathematics.Logrithmic.LogCalculator
```
Next time when you fire up `iex`, you don't have to alias these modules again. It will be directly accessible in the shell.

Hope, you like this easy little hack. Let me know your thoughts.


