私はSW Devとして募集されています。私はRSPECとRRを使ってユニットテストをルビーにしようとしていますが、特定の戦略を決定するのは大変でした。すでに書かれたコードに単体テストを書き込むために割り当てられています。Rubyユニットテストテクニック、モックとスタブ
は、法1と呼ばれる大きな方法の一部である次のコードを考えてみましょう:
if (["5234541252", "6236253223"].include?(self.id))
self.DoCheck
logs.add 'Doing check', "id = #{self.id}"
return
end
方法のこの部分に関連するユニットテストのようなものとなってきたでしょう:
"should do check only if id = 5234541252 or 6236253223"
しかし、私は基本的にベストプラクティスを含むいくつかの質問に就いています:
DoCheck RRとRSPECを使って "method1"から呼び出されましたか?
私はdont_allow(Object).DoCheckを使ってみましたが、動作しません。
describe :do_route do
it "should do check only if id = 5234541252 or 6236253223" do
user = Factory(:User)
user.id = "5234541252"
dont_allow(user).DoCheck
user.method1
end
「DoCheck」が呼び出されたかどうかを判断する他の方法はありますか?
これが「大きな方法の一部」であるという事実は、巨大な赤旗です。より良い、より簡単で、より効果的なテストのために、コードをリファクタリングする必要があります。また、InitialCapsでメソッド名を使用することによって証明されているように、他の多くの問題が疑われます。 –
私は全く同意しますが、残念ながら、コードをリファクタリングすることは現在のところ問題です。 –
WHAT ???彼らはコードを改善するつもりがない場合、ユニットテストのために何を望んでいますか? –