jackの勉強日記

勉強したことをアウトプットするための日記です。

テストコードでの気づき

オリジナルアプリのテストコードを書いている際に、忘れていたことと新しく学んだことの2つを残します。

1. テストコード内での画像について

ActiveStrageを用いて、画像を投稿する際のテストコードの書き方を忘れていました。

まずは復習です。

今回はFactoryBotを使用するので、spec/factories/posts.rbに必要な情報を記述します。

この時、自分はアソシエーションを忘れがちなので、そこも注意。

記述が終わったら、spec/modoels/post_spec.rbにテストコードを書いていきます。

この時before do ~ endの中に@post = FactoryBot.build(:post)でテスト用の

@postを作成します。

問題はこの後。

同じくbefore do ~ endの中に

@post.image = fixture_file_upload("app/assets/images/test.jpg")

とすることで、imagesディレクトリに配置されているtest.jpgを@postの画像として

使用することができます。

 

以上がテストコード内での画像についてでした。

2. 〜文字以下のテストをかけるときの気づき

今まで書いてきたテストコードは、多くても10文字以下だったので、

例えば、

@post.name="test1234567"

と書けば名前が11文字dウェは登録されないことが確認できました。

しかし、今回の投稿のテキストは200文字まで許容しています。

なので、201文字の時はデータを保存できないことを確認したいです

その時、@post.textに201文字書き込まないといけないのか??と思いました。

正直、めんどくさい。。。

そこで調べてみると、ありました解決策が。

それがこれです。

@post.text = "a" *201

これで@post.textにはaが201文字入りました。

なんて簡単なんだ。

自分の中で、ここで演算子を使う発想が全くなかったので目から鱗でした。

調べてみて良かったです。