Rspecで実装側のメソッドを使用するために行ったことの話

プログラミングを本格的にスタートして3ヶ月目に入りましたさかもとです。

今回はRspecで実装側で定義されたメソッドをテスト環境でも使用できるようにしたい!という話をアウトプットしようと思います。

 

現状

 

Rspecシステムテストで下記のような状況に陥りました。。

```

expect(page).to have_content ( current_time(Time.current) )

```

このテストは遷移先のページに現在の時刻が実装側の表記と合うようにcurrent_timeという実装側のメソッドを使用し表しています。

こうすることで、実装側で表記方法が変わってしまってもテスト側も連動して変わるのでいちいち書き換える必要がないというメリットがあります。

しかしテストを実行してかえってきた答えは

```

undefined method ' current_time '  for ~~~~

``` 

え。。。

というのが今回の問題でした。

 

解決法

 

結果としてテストの書き方自体に問題はありませんでした。

問題があったのは実装側で定義されたメソッドを読み込めていなかったテスト側にありました。

current_timeメソッドは実装側のApplicationHelperで定義されたものです。

しかしテスト側ではApplicationHelperファイルは読みこまれていません。

そこでrails_helper.rbに

```

config.include ApplicationHelper

```

このように記述してあげることでテスト側でも実装側で定義されたメソッドを使用することができテストも無事に通りました。

 

参考記事

 

RSpecでApplicationHelperのメソッドを使う - Qiita