Giả sử bạn có một trang web mua bán vật dụng. Tuy nhiên, khoảng không quảng cáo của mỗi tiện ích bị giới hạn, vì vậy điều quan trọng là giữ cho số "widget.number_still_available" được cập nhật.Khi thử nghiệm với rspec, nơi để đặt phổ biến "phương pháp thử nghiệm tiện ích"?
Tôi muốn viết một bài kiểm tra rspec dọc theo dòng của
it "always displays the correct number still available" do
# Assume there is a before method that sets up a widget with 5 available
widget.number_still_available.should == 5
# User "[email protected]" purchases 2 widgets
widget.number_still_available.should == 3
# User "[email protected]" purchases 1 widget
widget.number_still_available.shhould == 2
# User "[email protected]" cancels purchase of 1 widget
widget.number_still_available.should == 4
end
Tôi muốn để có thể viết thử nghiệm chỉ phương pháp mà thực hiện việc "mua" và "hủy" phương pháp. Những hành động này không tương ứng với bất kỳ phương thức "thực" nào trong các mô hình của tôi vì nhiều lý do (đáng kể nhất là có một hệ thống back-end được tách riêng trong PHP thực hiện một phần hành động mua và hủy).
Địa điểm chính xác để đặt mã này khi sử dụng RSpec ở đâu? Trong dưa chuột, tôi có thể viết một vài bước - nhưng tôi không chắc những gì tương đương chính xác là cho RSpec.
Lưu ý rằng nó cũng hoạt động với các lớp mô hình vá khỉ trong cùng một tệp này. Vì vậy, nếu bạn ưa thích 'purchase_widgets' thành phương thức chỉ thử nghiệm trên Người dùng, bạn có thể mở lớp Người dùng trong tệp này và thêm nó. Ngoài ra, để thuận tiện hơn, nếu bạn đang thử nghiệm với Spork, bạn có thể muốn thêm 'load" # {Rails.root} /spec/support/purchase_helpers.rb "' vào trong khối 'Spork.each_run' trong spec_helper.rb. – cailinanne
Đó là bit cuối cùng chỉ cần thiết nếu bạn muốn bao gồm các phương thức 'PurchaseHelper' trong không gian tên của tất cả các thông số kỹ thuật. Nếu bạn chỉ muốn thực hiện khi cần, bạn có thể gọi 'bao gồm PurchaseHelpers' trong khối' description' của bạn. –