2008-09-26 31 views

Trả lời

6

CucumberRSpec đáng xem. Họ khuyến khích thử nghiệm theo kiểu behaviour-driven, dựa trên mẫu.

RSpec là một thư viện cho kiểm tra đơn vị cấp:

describe "hello_world" 
    it "should say hello to the world" do 
    # RSpec comes with its own mock-object framework built in, 
    # though it lets you use others if you prefer 
    world = mock("World", :population => 6e9) 
    world.should_receive(:hello) 
    hello_world(world) 
    end 
end 

Nó có hỗ trợ đặc biệt cho Rails (ví dụ như nó có thể kiểm tra models, views và controllers trong sự cô lập) và có thể thay thế các cơ chế kiểm tra tích hợp sẵn trong Rails .

dưa chuột (trước đây gọi là RSpec Câu chuyện Runner) cho phép bạn viết nghiệm thu cấp cao trong (khá) đồng bằng tiếng Anh mà bạn có thể hiển thị cho (và đồng ý với) một khách hàng, sau đó chạy chúng:

Story: Commenting on articles 

    As a visitor to the blog 
    I want to post comments on articles 
    So that I can have my 15 minutes of fame 

    Scenario: Post a new comment 

    Given I am viewing an article 
    When I add a comment "Me too!" 
    And I fill in the CAPTCHA correctly 
    Then I should see a comment "Me too!" 
+0

API thứ hai cho các thử nghiệm chấp nhận đã được đưa ra khỏi RSpec và hiện được gọi là "dưa chuột". –

+0

Cảm ơn - Tôi đã chỉnh sửa để cập nhật câu trả lời. –

4

Đề xuất của tôi là (nghiêm túc) chỉ cần bỏ qua công cụ kiểm tra đơn vị đường ray/công cụ kiểm tra chức năng và đi thẳng đến RSpec.

Công cụ xây dựng đường ray sử dụng khung Test::Unit đi kèm với ruby ​​và ít nhiều là một cổng thẳng của JUnit/NUnit/AnyOtherUnit.
Tôi thấy những khuôn khổ này khá tẻ nhạt và khó chịu, dẫn đến sự thờ ơ chung về việc viết các bài kiểm tra đơn vị, rõ ràng không phải là những gì bạn đang cố gắng đạt được ở đây.

RSpec là một con thú khác, tập trung xung quanh mô tả mã của bạn nên làm, thay vì khẳng định nó đã làm. Nó sẽ thay đổi cách bạn xem thử nghiệm, và bạn sẽ có một heck vui vẻ hơn rất nhiều làm nó.

Nếu tôi nghe giống như một fanboy, đó là vì tôi thực sự tin rằng RSpec là tốt. Tôi đã đi từ khó chịu và mệt mỏi của đơn vị/thử nghiệm chức năng, để một người tin tưởng trung thành trong nó, khá nhiều chỉ vì rspec.

+0

Test :: Unit và RSpec chỉ là công cụ - giá trị là cách bạn sử dụng chúng. Bất cứ điều gì bạn có thể làm trong RSpec bạn có thể làm trong Test :: Unit. BDD chỉ là cải tiến so với TDD vì nó chỉ ra bằng ngôn ngữ rõ ràng những gì bạn nên làm trong các bài kiểm tra của mình. Xem http://dannorth.net/introducing-bdd –

+0

đó chính xác là quan điểm của tôi. Tôi có thể viết tất cả các bài kiểm tra của tôi trong x86 assembler nếu tôi muốn. Giá trị là cách nó ảnh hưởng đến suy nghĩ của bạn, và do đó giúp bạn tạo ra các bài kiểm tra tốt hơn –

4

Có vẻ như bạn đã viết đơn đăng ký của mình, vì vậy tôi không chắc chắn bạn sẽ nhận được một khoản tiền thưởng khổng lồ từ việc sử dụng RSpec trên Test::Unit.

Dù sao đi nữa, bất kể bạn chọn cái nào, bạn sẽ nhanh chóng gặp phải một vấn đề khác: quản lý đồ đạc và mocks (ví dụ: dữ liệu thử nghiệm của bạn "). Vì vậy, hãy xem ShouldaFactory Girl.

0

Ngay cả khi ứng dụng đã được viết, tôi khuyên bạn nên sử dụng RSpec over Test :: Unit cho thực tế đơn giản là không có ứng dụng nào được hoàn thành. Bạn sẽ muốn thêm các tính năng và mã refactor. Bắt thói quen kiểm tra ngay từ rất sớm sẽ giúp làm cho những thay đổi này ít đau đớn

1

Bạn cũng có thể kiểm tra giao diện web với Firefox plug-in như http://selenium.openqa.org/

Nó sẽ ghi lại nhấp chuột và nhập văn bản và sau đó đóng lại và sẽ kiểm tra trang cho các yếu tố hiển thị chính xác.

Các vấn đề liên quan