Sự khác biệt giữa khối it và khối xác định trong RSpec


83

Sự khác biệt giữa khối it và khối chỉ định trong RSpec là gì?

subject { MovieList.add_new(10) }

specify { subject.should have(10).items }
it { subject.track_number.should == 10}

Họ dường như làm cùng một công việc. Chỉ cần kiểm tra để chắc chắn.

Câu trả lời:


110

Các phương pháp đều giống nhau ; chúng được cung cấp để làm cho thông số kỹ thuật đọc bằng tiếng Anh đẹp hơn dựa trên nội dung bài kiểm tra của bạn. Hãy xem xét hai điều này:

describe Array do
  describe "with 3 items" do
    before { @arr = [1, 2, 3] }

    specify { @arr.should_not be_empty }
    specify { @arr.count.should eq(3) }
  end
end

describe Array do
  describe "with 3 items" do
    subject { [1, 2, 3] }

    it { should_not be_empty }
    its(:count) { should eq(3) }
  end
end

9
Bạn đúng, Brandon, itspecifylà những phương pháp giống hệt nhau. Bạn có thể thấy nơi chúng được xác định ở đây trong nguồn .
Jordan Running

1
Bắt xuất sắc! Thật ngạc nhiên những gì bạn có thể tìm thấy khi đọc nguồn. :) Tôi sẽ cập nhật câu trả lời.
Michelle Tilley

2
Dưới đây là ý chính với các tên phương thức ví dụ kể từ tháng 12 năm 2013: gist.github.com/Dorian/7893586 (ví dụ: nó, chỉ định, tiêu điểm, ...)
Dorian

4
rspec tốt hơn tư vấn cho chống lại việc sử dụng should, và ủng hộexpect
fotanus

4
CẬP NHẬT liên kết tuyệt vời từ @Jordan: github.com/rspec/rspec-core/blob/master/lib/rspec/core/… hiện là nơi bạn có thể tìm thấy nó.
Florian Eck,
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.