2010-07-08 6 views
17

Tôi đang viết một ứng dụng web được sử dụng SaS. Mỗi khách hàng có thư mục ứng dụng và db riêng của họ, vì vậy tôi có một nhiệm vụ cào tạo tất cả dữ liệu tối thiểu cần thiết (dữ liệu hạt giống) để chạy trang web của họ: quyền và vai trò mặc định, người dùng superadmin, bảng "us_states" đã phổ biến, một số kho địa phương và thiết bị đầu cuối (đó là một ứng dụng hậu cần).Dữ liệu hạt giống trong các thử nghiệm dưa chuột

Tôi không có bất kỳ tình huống dưa chuột nào cho nó và tôi vừa bắt đầu xây dựng một số. Tôi là người mới bắt đầu với dưa chuột.

Lần đầu tiên tôi đặt tác vụ dữ liệu hạt giống đó vào dòng Given, nhưng điều đó là khá nhiều đối với tất cả các trường hợp và không có ý nghĩa gì với những người không lập trình xem xét kịch bản (đối với con người, là như vậy cho rằng nó không cần phải được thể hiện có ý thức) vì vậy tôi chuyển nó vào hooks.rb.

kịch bản đầu tiên của tôi trông như thế này:

 
    1 Feature: Place an order 
    2 In order to keep orders in the database 
    3 As a admin 
    4 I want to place orders 
    5 
    6 Scenario: Using common legs 
    7 Given I have 1 customers 
    8 And I'm on the homepage 
    9 And I follow "Place an Order" 
10 When I select the customer 
11 And I select the SSLine 
12 And I click "Use Common Legs" 
13 Then I should see "PICKUP AT" 
14 And I should see "DELIVER TO" or "LOAD AT" 
15 And I should see EMPTY RETURN 

hooks.rb của tôi trông như thế này:

1 Before do 
2 MinimumData.new('costi', '1234').populate #username and password 
3 end 

Câu hỏi:

  1. Tôi không muốn chạy MinimumData này. điền công việc trước mỗi kịch bản bởi vì nó mất 8 giây. Tôi có nên làm cho nó chạy chỉ một lần, trên toàn cầu? Làm sao?
  2. Tôi có phải dọn dẹp cơ sở dữ liệu bằng After.do không? Tôi thực sự không muốn làm điều đó, bởi vì tôi sẽ lặp lại logic trong After.do, chỉ với các câu lệnh Model.delete_all. Tôi nhận thấy rằng sau lần chạy đầu tiên của tôi, db thử nghiệm có tất cả dữ liệu đó vẫn còn trong đó. Tôi có thể lọc nó với db rake: test: purge và reinitialize nó. Đó có phải là một thực hành tốt?

Trả lời

22

Tôi không biết số tương đương là before(:all) bằng dưa chuột. Những gì bạn có thể làm là thêm dòng dõi ngươi vào một tập tin nói features/support/seeds.rb và sau đó ở phía trên cùng của features/support/env.rb của bạn và dưới dòng đó đòi hỏi bạn environment.rb đưa dòng:

require File.dirname(__FILE__) + '/seeds' 

hoặc cách khác

#just write the code you want to execute directly into the env.rb file 

Những là các khối khả dụng của bạn để thêm vào trong số env.rb

Before do 
    #this code is run before each scenario 
end 

after do 
    #this code is run after each scenario 
end 

at_exit do 
    #this code is run at the end 
end 
+1

"trước khi làm" nên được writte "Trước khi làm", bắt đầu với một chữ hoa – 0x4a6f4672

3

Geoff Lanotte có câu trả lời. Tôi chỉ mặc dù tôi muốn thêm một liên kết đến trang wiki Cucumber trên hooks mô tả các ví dụ này và các ví dụ khác.

+0

và ở đây tôi nghĩ rằng tôi đã là thông minh! :) cảm ơn! –

7

Một sự điều chỉnh cho câu trả lời của Geoff Lanotte. Nó phải là

 
Before do 
    # this code is run before each scenario 
end 

với B. vốn

Thay vì đặt loại mã trong tập tin env.rb bạn, tuy nhiên, bạn có thể muốn đặt nó trong một tập tin mới trong các tính năng của bạn/hỗ trợ thư mục, ví dụ tệp "hooks.rb". Điều này là do tệp env.rb được tự động tạo lại nếu bạn nâng cấp đường dẫn dưa chuột.

biết thêm thông tin ở đây: https://github.com/cucumber/cucumber/wiki/Hooks