12/08/2018, 14:00

Giới thiệu về Rspec phần 1

đôi lời về bài viết: Bài viết dược với mục đích giới thiệu về Rspec, nên sẽ được sắp xếp sao cho dễ tiếp cận với người đọc nhất. Sơ lược về Rspec Rspec là gì? Rspec là một testing framework dành cho Ruby, bên cạnh những testing framwork khác, Rspec được biết đến và sử dụng bởi cú pháp dễ đọc. ...

đôi lời về bài viết: Bài viết dược với mục đích giới thiệu về Rspec, nên sẽ được sắp xếp sao cho dễ tiếp cận với người đọc nhất.

Sơ lược về Rspec

Rspec là gì?

Rspec là một testing framework dành cho Ruby, bên cạnh những testing framwork khác, Rspec được biết đến và sử dụng bởi cú pháp dễ đọc. Rspec có thể đọc và hiểu bởi những người có ít kiến thức về lập trình nhất. Nó kiến cho việc giao tiếp giữa lập trình viên, tester, và ngay cả khách hàng trở nên dễ dàng hơn.

Cài đặt Rspec

Để cài đặt Rspec ta sử dụng gem "rails-spec" Gemfile mẫu:

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

  group :test do
    gem "faker"
    gem "capybara"
    gem "database_cleaner"
    gem "launchy"
    gem "selenium-webdriver"
  end

Tại sao lại phải chia làm hai group khác nhau?

rspec-rails và factory_girl_rails được sử dụng trong cả hai môi trường development và test, trong khi các gem còn lại như faker chỉ dùng trong môi trường test, chính vì thế, ta chia ra làm hai group, để đảm bảo các gem chỉ sử dụng trong môi trường test không được cài đặt ở môi trường development.

Model Specs

Theo ý kiến chủ quan của tôi, việc viết test cho model là phần nên được thực hiện trước tiên và cũng làm phần quan trọng nhất, vì nó giúp cho việc đảm bảo các ràng buộc logic cho ứng dụng web của chúng ta cũng như kiểm tra tính đúng đắn của các method ta đã viết.

Ta hãy làm quen với Rspec ví dụ Rspec cho model User dưới đây:

ruby
  describe User do
    it "is valid, with a firstname, lastname, and email"
    it "is invalid without a firstname"
    it "is invalid without a lastname"
    it "is invalid without an email"
    it "is invalid with duplicate email"
    it "return a user's full name as a string"
  end

Chúng ta sẽ giải thích đôi chút về những gì đã viết bên trên:

  • "describe" cho biết rằng chúng ta sẽ mong đợi điều gì từ một file Rspec, như ở đây thì ta đang mong đợi các mô tả về model User

  • "it" chỉ ra rằng chúng ta mong đợi một hành động nào đó, ở đây, với mỗi dòng test, chúng ta kì vọng việc sẽ phát hiện ra sự có mặt của mỗi mõi thuộc tính của object user nào đó sẽ là valid hay invalid.

  • Nên chú ý mỗi test case của chúng ta được bắt đầu bằng một động từ chứ không phải một danh từ

chúng ta hãy thử nghiệm những gì mình vừa viết bằng cách chạy command

"bundle exec rspec" từ terminal

Bạn đã nhìn thấy gì nhỉ?             </div>
            
            <div class=

0