Làm cách nào tôi có thể yêu cầu Rails sử dụng RSpec thay vì đơn vị kiểm tra khi tạo ứng dụng Rails mới?


152

Tôi đã test-unitcài đặt và rspeccài đặt (cùng với -core, -expectations, -mocks-railsphiên bản 2.6.x). Khi tôi chạy lệnh rails new foo, nó sử dụng test-unitđể tạo các tệp sơ khai thử nghiệm thay vì rspec.

Có một tùy chọn mà tôi có thể nói đường ray sử dụng rspec để tạo các bài kiểm tra thay thế không?

Câu trả lời:


262

Sau đây nên làm việc:

tại dòng lệnh:

rails new MYAPP -T # The -T option tells rails not to include Test::Unit

trong Gemfile:

gem 'rspec-rails'

tại dòng lệnh:

bundle install
rails g rspec:install

Tôi nghĩ rằng một số bước đã ra khỏi trật tự, phải không? Điều này có vẻ như điều này sẽ làm việc mặc dù nếu được thực hiện theo đúng thứ tự. Vui lòng chỉnh sửa câu trả lời của bạn và tôi sẽ đánh dấu nó là chấp nhận.
aarona

60
Bạn không cần trình generator.rbkhởi tạo, điều này được chăm sóc bởi lan can của RSpec. Tất cả những gì bạn cần là rspec-railstrong developmentnhóm Gemfileđủ để yêu cầu nó cho máy phát điện. Bạn cũng không cần tạo ứng dụng -T, bạn có thể xóa testthư mục và nó sẽ hoạt động.
Ryan Bigg

1
Bạn có thể chỉnh sửa mã từ g.test_framework =: rspec thành g.test_framework: rspec
Deepak Lamichhane

8
@RyanBigg: với tùy chọn -T chúng tôi sẽ "rails/test_unit/railtie"nhận xét trongapplication.rb
Giang Nguyễn

13
Khi bạn thêm rspec-railsđá quý, điều quan trọng là phải thử nó phát triển, hoặc các trình tạo sẽ không sử dụng RSpec ngay cả khi bạn làm theo các bước trên.
f / 2Ink

73

Tạo ứng dụng đường ray mới của bạn dưới dạng:

rails new <app_name> -T

Hoặc xóa testthư mục của bạn khỏi ứng dụng hiện tại của bạn:

rm -rf test/

Tạo một mục trong Gemfile của bạn:

gem 'rspec-rails'

Từ dòng lệnh cài đặt gem

$ bundle install

Từ dòng lệnh cài đặt rspec vào ứng dụng của bạn:

$ rails g rspec:install

Bây giờ ứng dụng rails của bạn sử dụng RSpec thay vì đơn vị thử nghiệm.


2
Bước 'cài đặt gói' bị thiếu trong danh sách đó. Thêm.
cczona

6

Khi bạn đã tạo ứng dụng rails của mình với:

rails new <app_name> -T  # to exclude Test::Unit

Thêm đá quý RSpec vào Gemfile của bạn theo cách sau:

group :development, :test do
  gem "rspec-rails"
end

Trong dòng lệnh viết:

bundle install  # this will install the missing gems

Bây giờ bạn cần cài đặt RSpec bằng cách chạy:

rails generate rspec:install

Điều này sẽ tạo ra các tập tin sau:

create  .rspec
create  spec
create  spec/spec_helper.rb
create  spec/rails_helper.rb

Tôi thực sự khuyên bạn nên đọc qua tất cả các bình luận spec_helper và rails_helper để hiểu rõ về từng lựa chọn.

Khi mọi thứ đã được đặt, bạn có thể chạy tất cả các thử nghiệm của mình với:

bundle exec rspec

Bạn có thể đọc thêm về các cấu hình spec_helper và rails_helper được đề xuất trên https://kolosek.com/rails-rspec-setup .


4

Tôi là một nhà phát triển mới và tôi vừa tạo một cờ rails (-rspec) để giải quyết vấn đề của OP. Nó thoát khỏi Test :: Unit và chèn gem rails-rspec với tập lệnh bash. Kịch bản có thể được sửa đổi để giúp các nhà phát triển linux bằng cách tự động thêm đá quý trị liệu hoặc tạo cờ và đá quý tùy chỉnh. (có thể đặc biệt đi đến dòng đá quý đó và xóa nhận xét)

Đây là ý chính && Tôi hy vọng điều này sẽ giúp được ai đó ngoài kia. https://gist.github.com/MTen/8310116


0

Không có cách riêng để làm điều này với railsCLI. Tạo một dự án mới mà không có test-unit:

rails new rails-app --skip-test

Và sau đó làm theo rspechướng dẫn để tích hợp nó vào ứng dụng Rails mới.

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.