# 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 Calculat...

- Published: 2020-09-26T08:12:27.824Z
- Reading time: 2 minutes
- Tags: Elixir
- Original publication: [Hashnode](https://abulasar.com/hassle-free-testing-elixir-modules-in-iex-shell)
- Canonical portfolio page: [abulasar.dev](https://abulasar.dev/notes/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.

## Continue

- [All technical notes](https://abulasar.dev/notes/)
- [About Abulasar](https://abulasar.dev/about/)
- [Contact Abulasar](https://abulasar.dev/contact/)
