Home » Ruby Tutorial Box » ROR Test. Capybara + Rspec bộ đôi tuyệt vời!

ROR Test. Capybara + Rspec bộ đôi tuyệt vời!

Chắc hẳn ai lập trình ROR(ruby on rails) đều biết đến rspec một công cụ viết test trên ROR. Rspec dẽ dàng giúp chúng ta viêt test cho các controller, các mode.. hơn thế nữa khi đi cùng simplecov chúng ta còn dẽ dàng biết được số lương “Code Coverage”. Nhưng như thế liệu đã đủ hay chưa? chắc chắn câu trả lời sẽ là “chưa”. Khi viết test với controller, mode chúng ta chỉ có thể kiểm tra được sự đúng sai của từng function, Nhưng sự hoạt động đúng đắn của sản phẩm chúng ta vẫn chưa thể dám chắc. Bạn có chắc chắn được khi click vào nút “Login” khi đã nhập mật khẩu và tài khoản đúng nó sẽ dẫn tới trang ta mong muốn? hay nói cách khác bạn có chắc chắn giao diện đăng nhập của bạn hoạt động đúng khi chỉ có mỗi controller login đúng? Function login đã hoạt động chính sác chưa?
Capybara sẽ giúp chúng ta giải quết vẫn đề trên. Để hiểu dõ hơn khả năng của Capybara chúng ta sẽ cùng tìm hiểu sâu hơn về nó.


1. Cài Đặt

B1: Capybara chạy trên ruby 1.9.3 trở lên. Ta cài đặt nó bằng câu lệnh:
gem install capybara
B2: Trong Rails app ta thêm dòng sau vào file rspec_helper.rb
require 'capybara/rails'
B3: Tạo thư mục features trong thư mục spec.

2. VD

tại đây ta sẽ lấy 1 ví dụ về test màn hình login.



visit: Khai báo đừng link trang web. ở đây là trang login

within : tìm kiếm 1 phần tử trên trang web: tại đây là tìm tới form có id là “sessions”

fill_in : tìm kiếm các phần tử trên trang web. tại đây ta tìm kiếm tới id là email và Passoword và gán các giá trị tương ứng tại key with

find : được dùng để tìm kiếm các phần tử trên trang. nó giống như $(”) trong javascrip. find(‘#btn_submit’).click : thực hiện hành đông click bào button login. ta có thể dùng cách submit khác như là:click_button, hay click_on. Với các link ta có thể dùng click_link

page : Là giá trị mặc đinh được trả về sai khi submit nút login.

Dưới đây là các thuộc tính được dùng trong capybara


  • Clicking links and buttons


 
  • Interacting with forms

 

  • Querying



  • Finding



  • Scoping



  • Scripting



  • Debugging


3. Mở rộng.

không chỉ dừng lại ở đó. capybara còn có thể kết hợp với selenium để tạo test tự động. Ta cũng có thể chụp lại màn hình kết quả sau khi chạy test.

ta cấu hình như sau: cài đặt các gem sau.

gem "capybara-webkit"
gem "selenium-webdriver"
gem "capybara-screenshot"

Để chạy được selenium ta chỉ cần tạo dirver chạy selenium. Chúng ta sẽ xem code dưới đây để dễ hiểu hơn

Chúng ta dễ dàng thấy chỉ cần khai báo Capybara::Session.new(:selenium). Khi chạy qua dòng này chương trình sẽ tự gọi trình duyệt web mặc đinh lên và thực hiện những câu lện được cài đặt ở dưới. Chúng ta sẽ dễ dàng nhìn thấy sự hoạt động của nó trên màn hình. Điêu cần chú ý ở đây khắc với chạy thông thường là ta phải chỉ định đường link thực sự của web ( ‘http://testSelenium/signin’).

để hiểu rõ hơn bạn có thể tham khảo trang theo link sau:

http://d.hatena.ne.jp/willnet/20110704/1309782442
https://github.com/jnicklas/capybara

Thanks!