10
私はいくつかの小さなルビープログラムを書いている間、TDDの学習に取り組んでいます。私は次のクラスを持っています:Rspecが機能しない、または育てない?
class MyDirectory
def check(dir_name)
unless File.directory?(dir_name) then
raise RuntimeError, "#{dir_name} is not a directory"
end
end
end
そして私はこのrspecテストでテストしようとしています。
describe MyDirectory do
it "should error if doesn't exist" do
one = MyDirectory.new
one.check("donee").should raise_exception(RuntimeError, "donee is not a directory")
end
end
rspec出力から何が間違っているのか分かりません。
Failures:
1) MyDirectory should error if doesn't exist
Failure/Error: one.check("donee").should raise_error(RuntimeError, "donee is not a directory")
RuntimeError:
donee is not a directory
# ./lib/directory.rb:4:in `check'
# ./spec/directory_spec.rb:9:in `block (2 levels) in <top (required)>'
これは私が行方不明の単純なものだと思っていますが、私はそれを見ていないだけです。
これは完璧に動作します、ありがとう! – gdziengel
私は 'expect {...}。to 'の代わりに' expect(...)。to'を使用しましたが、この回答は最終的に私が間違いを見つけるのを助けました! –
ブロックを使用するのではなく括弧を使用すると、例外が泡立ちます。 https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchersを参照してください。例外を予期するためにブロック構文を使用する必要があります。 –