RSpec - Đối tượng
Một trong những điểm mạnh của RSpec là nó cung cấp nhiều cách viết test, kiểm tra sạch. Khi các bài kiểm tra của bạn ngắn gọn và gọn gàng, bạn sẽ dễ dàng tập trung vào hành vi mong đợi hơn chứ không phải chi tiết về cách bài kiểm tra được viết. RSpec Subject là một phím tắt khác cho phép bạn viết các bài kiểm tra đơn giản.
Hãy xem xét mã này -
class Person
attr_reader :first_name, :last_name
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
end
describe Person do
it 'create a new person with a first and last name' do
person = Person.new 'John', 'Smith'
expect(person).to have_attributes(first_name: 'John')
expect(person).to have_attributes(last_name: 'Smith')
end
end
Nó thực sự khá rõ ràng, nhưng chúng tôi có thể sử dụng tính năng chủ đề của RSpec để giảm số lượng mã trong ví dụ. Chúng tôi làm điều đó bằng cách di chuyển đối tượng người đó vào dòng mô tả.
class Person
attr_reader :first_name, :last_name
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
end
describe Person.new 'John', 'Smith' do
it { is_expected.to have_attributes(first_name: 'John') }
it { is_expected.to have_attributes(last_name: 'Smith') }
end
Khi bạn chạy mã này, bạn sẽ thấy đầu ra này:
..
Finished in 0.003 seconds (files took 0.11201 seconds to load)
2 examples, 0 failures
Lưu ý, mẫu mã thứ hai đơn giản hơn bao nhiêu. Chúng tôi đã lấy mộtit block trong ví dụ đầu tiên và thay thế nó bằng hai it blocks mà cuối cùng yêu cầu ít mã hơn và cũng rõ ràng.