Pracuję nad uczeniem się TDD podczas pisania kilku małych programów ruby. Mam następujące klasy:Rspec nie działa, lub podbijać nie podbijając?
class MyDirectory
def check(dir_name)
unless File.directory?(dir_name) then
raise RuntimeError, "#{dir_name} is not a directory"
end
end
end
i próbuję przetestować go za pomocą tego testu 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
Nigdy nie działa i nie rozumiem, co jest nie tak z wyjściem 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)>'
Mam nadzieję, że to jest coś prostego, czego mi brakuje, ale po prostu go nie widzę.
To działa idealnie, dzięki! – gdziengel
Użyłem 'oczekiwać (...). Na' zamiast 'spodziewać {...}. Do' i ta odpowiedź w końcu pomógł mi znaleźć błąd! –
Należy pamiętać, że jeśli użyjesz nawiasów zamiast używać bloku, wyjątek może się rozwinąć. Zobacz https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers Aby oczekiwać wyjątków, należy stosować składnię bloków. –