Mục đích của Factory Girl trong các thử nghiệm rspec khi tôi có thể sử dụng các khối before(:each)
là gì? Có vẻ như sự khác biệt duy nhất giữa Factory Girl và before(:each)
là nhà máy chuẩn bị tạo đối tượng bên ngoài thử nghiệm. Thê nay đung không?Factory Girl - mục đích là gì?
Trả lời
Đá quý như Factory Girl và Sham cho phép bạn tạo mẫu cho các đối tượng hợp lệ và có thể sử dụng lại. Chúng được tạo ra để đáp ứng các đồ đạc mà ở đó các bản ghi cố định phải được nạp vào cơ sở dữ liệu. Chúng cho phép tùy biến nhiều hơn khi bạn khởi tạo các đối tượng và chúng nhằm mục đích đảm bảo rằng bạn có một đối tượng hợp lệ để làm việc. Chúng có thể được sử dụng bất cứ nơi nào trong các thử nghiệm của bạn và trong các móc thử trước và sau của bạn.
trước (: mỗi), trước (: tất cả), sau (: mỗi) và sau (: tất cả) tất cả nhằm cung cấp cho bạn một nơi để thiết lập và rách sẽ được chia sẻ giữa một nhóm thử nghiệm. Ví dụ, nếu bạn định tạo một người dùng hợp lệ mới cho mỗi lần thử nghiệm, thì bạn sẽ muốn làm điều đó trong hook trước (: each) của bạn. Nếu bạn định xóa một số tệp ra khỏi hệ thống tệp, bạn muốn thực hiện điều đó trong một hook trước đó. Nếu tất cả các thử nghiệm của bạn tạo ra một tệp tmp và bạn muốn loại bỏ nó sau khi thử nghiệm của bạn, bạn sẽ làm điều đó trong móc sau (: each) hoặc sau (: tất cả) của bạn.
Cách mà hai khái niệm này khác nhau là các Nhà máy không nhằm tạo ra các móc xung quanh các thử nghiệm của bạn, chúng nhằm mục đích tạo các đối tượng và bản ghi Ruby hợp lệ để bạn có thể giữ cho đối tượng của bạn linh hoạt và KHÔ. Trước và sau khi móc là nhằm mục đích thiết lập và teardown nhiệm vụ được chia sẻ trong một nhóm ví dụ để bạn có thể giữ thiết lập của bạn và teardown mã DRY.
Một cách khác để nói điều này: một nhà máy FactoryGirl giống như một hàm 'give_me_a_valid_model'. Nếu bạn sẽ cần nó trong nhiều hơn một 'trước: mỗi khối', nó giúp bạn tiết kiệm một số sự lặp lại. Việc phức tạp hơn là thiết lập mô hình hợp lệ (các liên kết, đảm bảo các giá trị duy nhất, v.v.), nỗ lực đó càng tiết kiệm cho bạn. –
FactoryGirl thay thế đồ đạc trong thử nghiệm. Bằng cách này, bạn sẽ không phải giữ các đồ đạc được cập nhật khi bạn thay đổi mô hình dữ liệu. Đồ đạc cũng có thể có xu hướng khó sử dụng khi bạn thêm các trường hợp cạnh khác.
FactoryGirl tạo dữ liệu khi đang di chuyển và việc thêm và xóa trường dễ dàng hơn nhiều. Ngoài ra, bạn có thể sử dụng nó trong thiết lập như thế nào bạn muốn sử dụng đồ đạc.
Điều đó có làm cho nó rõ ràng hơn không?
Mất một thời gian để tìm ra rằng các nhà máy là một sự thay thế "thông minh" cho đồ đạc. Tôi vẫn quan tâm để tìm hiểu thêm về sự khác biệt giữa mocks và stubs, quá. – Docunext
Chắc chắn, cảm ơn bạn. :) Tốt để biết rằng họ là một sự thay thế tốt cho đồ đạc. Đó là một chút kỳ lạ bởi vì các hướng dẫn Hartl (được tốt, btw) đi vào và ra giữa đồ đạc và nhà máy cô gái. Tôi thấy mình bối rối. Bây giờ tôi biết, tôi có thể sử dụng nó thường xuyên hơn. :) – curiousdork
định nghĩa lịch thi đấu là toàn cầu trên toàn bộ ứng dụng của bạn. Các nhà máy có thể là cục bộ - vì vậy dữ liệu cụ thể cho một trường hợp thử nghiệm riêng biệt nằm trong thiết lập cho bối cảnh cụ thể đó và không phải trong một tệp đồ đạc toàn cầu duy nhất.
This book bao gồm các chủ đề rất tốt nếu bạn muốn có một số đọc nhiều vấn đề
- 1. Factory Girl vs. User.create - sự khác biệt là gì?
- 2. Factory Girl và has_one
- 3. Thiết lập Factory Girl with Test :: Unit và Shoulda
- 4. mục đích là gì? "::" trong
- 5. tài liệu Factory Girl + Mongoid nhúng vào đồ đạc
- 6. Rails 3 Factory Girl + Nhiều mối quan hệ
- 7. Kiểm tra bộ điều khiển với RSpec, Devise, Factory Girl
- 8. Tạo người dùng trong Factory Girl với OmniAuth?
- 9. Mục đích của thuộc tính-đích là gì?
- 10. JAF là gì? Mục đích của nó là gì?
- 11. Tệp xcscheme là gì? Mục đích của nó là gì?
- 12. Mục đích của phiên JMS là gì?
- 13. Mục đích của config.assets.precompile là gì?
- 14. Mục đích của HttpHeaders.TryAddWithoutValidation là gì?
- 15. Mục đích của nguyên mẫu là gì?
- 16. Mục đích của is_uploaded_file() là gì?
- 17. Mục đích của tệp vshost.exe là gì?
- 18. Mục đích của Parse Vexing là gì?
- 19. Mục đích của Array.GetLowerBound (int) là gì?
- 20. Mục đích của tệp pdb là gì?
- 21. Mục đích của String.IsInterned là gì?
- 22. Mục đích của ldexp là gì?
- 23. Mục đích của IntentSender là gì?
- 24. Mục đích của character_set_connection là gì?
- 25. Mục đích của Rake là gì?
- 26. Mục đích của 'var' là gì?
- 27. Mục đích sử dụng là gì?
- 28. Mục đích của tệp .edmx là gì?
- 29. Mục đích của layout.xml là gì?
- 30. Mục đích của requestWindowFeature() là gì?
Đây là cách tương tác với FactoryGirl ActiveReccord https://cbabhusal.wordpress.com/2015/04/21/ruby-on-rails-factory -girl-how-it-tương tác-với-activerecord/ – illusionist