3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RSpecを読む、駆け出しエンジニア。

Last updated at Posted at 2022-10-11

駆け出し歴、1年5ヶ月

Railsで開発を行っている駆け出しエンジニアです。
RSpecでのテストを書いているのですが、自身がテストを書くときに意識している 文脈 について
共有したいと思い記事にしました。

駆け出したばかりの頃の自分へ向けた内容になっています :walking_tone1:

例とするテストコード

下記のようなテストコードがありました。
今日はこれを日本語で読んで行きたいと思います。

describe "drink?" do
  subject { UniversityStudent.new(age: age).drink? }

  context "19歳の場合" do
    let(:age) { 19 }

    it "お酒を飲んではいけないこと" do
      expect(subject).to be_falsey
    end
  end

  context "20歳の場合" do
    let(:age) { 20 }

    it "お酒を飲んでもいいこと" do
      expect(subject).to be_truthy
    end
  end
end

辞書を参考に

英語は難しいので、下記の辞書を参考にしながら読んでみます :sunglasses:

describe => 説明しよう!
subject => 本日のお題は
context => の話なんだけど
let => とさせてくれ
it  => それはね

1行ずつ読み解く

まずは1行ずつ解析します。

describe "drink?" doお酒飲んでもいいの? について説明しよう! とします
subject { UniversityStudent.new(age: age).drink? }
本日のお題は age歳の大学生はお酒を飲んでもいいの? となります。

大学生に関わらず、お酒は20歳になってから ← ここ重要 :beer:

どんどんいきます。

context "19歳の場合" do は 19歳の場合の話なんだけど
let(:age) { 19 }ageを19歳とさせてくれ
it "お酒を飲んではいけない" doそれはね"お酒を飲んではいけないこと"

以後、繰り返しです。

読み解いた結果

つなげて読むと

お酒飲んでもいいの? について説明しよう!
  本日のお題は age歳の大学生はお酒を飲んでもいいの?

  19歳の場合の話なんだけど、
    ageは19とさせてくれ

    それはね "お酒を飲んではいけないこと"
      本日のお題は "だめだよ" となることが予想される

  20歳の場合の話なんだけど、
    ageは20とさせてくれ

    それはね "お酒を飲んでもいいこと"
      本日のお題は "いいよ" となることが予想される

今回のような実装をする場合、私は仕様を整理して、閾値を意識した上記のような物語を考えます。
そして、今回行った 英=>和 の逆の変換 和=>英 を行い、
it context の文章や let の値について埋めていくのが良いのかなと考えています :sunny:

まとめ

お酒は20歳になってからにしましょう :beers:

ほんとうのまとめ

すみません、本当のまとめです。
動くドキュメントとして、読んで理解できるテスト作成を行って行きたいと思います。
最後まで読んで下さり、ありがとうございました :grin:

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?