2010-07-10 32 views
6

Tôi đang sử dụng dưa chuột làm khuôn khổ BDD với chế độ rspec/mocha mocking. Lý tưởng nhất là chúng tôi sẽ không mô hình/hành vi sơ khai trong thông số kỹ thuật dưa chuột; tuy nhiên kịch bản này là đặc biệt ở đây. Để cung cấp cho bạn ý tưởng ngắn gọn về vấn đề ở đây; Tôi có hai tính năng sản phẩm và tính năng giỏ hàng.Stub with Rspec/Mocha trong kịch bản dưa chuột

Tính năng giỏ hàng hiện đang mô phỏng một số lần tìm nạp sản phẩm từ hệ thống 3 bên. Và trong tính năng giỏ hàng dưa chuột chạy trước khi tính năng sản phẩm. Tính năng sản phẩm sử dụng cuộc gọi thực cho một số trường hợp. Lý tưởng nhất là chúng tôi mong đợi rằng các cấp Sơ đẳng cấp như Product.stub (: find) sẽ bị xóa khi các kịch bản được hoàn thành; Tuy nhiên, đó không phải là trường hợp. Cuống cấp lớp bám vào kịch bản dưa chuột tiếp theo chạy và can thiệp vào cuộc gọi.

Tôi đã thay thế lẫn nhau mocha và rspec để tạo ra các cuống; nhưng không có kết quả; trong cả hai trường hợp, phần còn lại vẫn giữ nguyên và ngăn tính năng sản phẩm của tôi chạy sau tính năng giỏ hàng. Cả hai đều chạy tốt trong sự cô lập.

Có ai phải đối mặt với vấn đề tương tự của cuống không được đặt lại trong dưa chuột không? Có cách nào, tôi có thể khôi phục lại hành vi của lớp gốc không?

Mọi trợ giúp sẽ được đánh giá cao.

Cheers

Trả lời

8

Đối với hội nhập mocha, bạn nên thêm dòng sau vào một tập tin trong các tính năng/thư mục hỗ trợ của bạn (như mocha.rb)

require "mocha" 

World(Mocha::Standalone) 

Before do 
    mocha_setup 
end 

After do 
    begin 
    mocha_verify 
    ensure 
    mocha_teardown 
    end 
end 

Các sau khi khối nên phát hành tất cả mocks.

Nguồn: http://gist.github.com/80554

+0

tuyệt vời. Chỉ cần những gì tôi cần để đổ rspec mocking/stubbing và đi với mocha! :) – Priyank

4

Cú pháp là hơi khác nhau cho mocha 1.1:

require 'mocha/api' 

World(Mocha::API) 

Before do 
    mocha_setup 
end 

After do 
    begin 
    mocha_verify 
    ensure 
    mocha_teardown 
    end 
end 
Các vấn đề liên quan