のために繰り返したい、私は正確に同じ2つのテストになってしまいました最初にxを入力し、その後にyの仕様を追加します。乾いた状態に保つが、私のRoRのモデルのための私の進化rspecsにおけるだから、さまざまな理由
明らかに、リファクタリングする時間。彼らは重複しているので、私は仕様の1つを削除することができます:それは乾燥したままにしてください。
ここで、各スペックの内部構造はまったく同じですが、it
の説明が異なります。私はそこに含まれている情報を失いたくはありません。
私の質問です - この場合、重複した仕様をそのまま保つことはできますか?それらをマージして、it
の説明に改名する必要がありますか?おそらく:
it 'is valid when x is zero and y is ten' do
foo = build(:foo, x: 0, y: 10)
expect(foo.valid?).to be_truthy
end
しかし、私の心に、私は今、二つのこと(フー・モデルにおける2検証条項)をテストしている1つのスペックを持っています。それも良いことではありません。潜む匂いがします。
私が見逃した別のアプローチはありますか?
それが依存 –
私見両方のテストを持っているとは全く許容できます。最初のテストで 'y:nil'を渡すべきでしょうか? 'y:false'で? 「y:MyY.new」と一緒に?そうでなければ、あなたはすでに問題に陥っています。一つは、テストされているものが欲しい。私は '{x、y}∈[良い、悪い] 'の4つのテストに行きます。 – mudasobwa
['#be_valid'](http://www.rubydoc.info/gems/rspec-rails/RSpec%2FRails%2FMatchers%3Abe_valid)を使用すると、' valid? 'が真実であることをなぜテストするのですか? 'expect(foo).to be_valid'アイデアはまったく同じで、私の意見ではそれをより読みやすくしています。 – engineersmnky