Tôi đang học về TDD trong khi viết một số chương trình ruby nhỏ. Tôi có lớp học sau:Rspec không hoạt động hoặc không tăng lương?
class MyDirectory
def check(dir_name)
unless File.directory?(dir_name) then
raise RuntimeError, "#{dir_name} is not a directory"
end
end
end
và tôi đang cố gắng kiểm tra bằng thử nghiệm rspec này.
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
Nó không bao giờ hoạt động và tôi không hiểu điều gì xảy ra với đầu ra 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)>'
Tôi hy vọng đây là điều đơn giản mà tôi đang thiếu, nhưng tôi chỉ không nhìn thấy nó.
Điều đó hoạt động hoàn hảo, cảm ơn! – gdziengel
Tôi đã sử dụng 'mong đợi (...) .' thay vì' mong đợi {...} .' và câu trả lời này cuối cùng đã giúp tôi tìm ra sai lầm! –
Hãy nhớ rằng nếu bạn sử dụng dấu ngoặc đơn thay vì sử dụng một khối, ngoại lệ có thể phát sinh. Xem https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers Cú pháp khối nên được sử dụng để mong đợi ngoại lệ. –