TESTING RAILS APPLICATIONS

I .Tests for your Rails Applications

Rails có khả năng tự sinh ra test code –> hỗ trợ viết các bài Test dễ dàng hơn. Running Rails test sẽ đảm bảo code theo đúng hướng ngay cả khi đã tái cơ cấu một số mã code lớn. Rails cung cấp các bài test bằng command line nên không nhất thiết phải sử dụng browser.

II.How to test Rails Application?

Cài đặt môi trường Test Rails sẽ tự sinh ra Test folder ngay khi khởi tạo Rails project. Bên trong folder này chứa các thư mục con trong danh sách sau:

$ ls -F test/

fixtures/       functional/    integration/    test_helper.rb  unit/

Unit folder chứa các bài tests cho Models, Functional folder chứa các bài tests cho Controllers, và Integration folder chứa một số bài test cho việc tương tác với controllers. Fixtures là nơi lưu trữ test data và test_helper.rb file sẽ chứa các cấu hình mặc định cho các bài tests.

Chuẩn bị cơ sở dữ liệu mẫu Để chuẩn bị cho việc test ứng dụng,cần chuẩn bị data mẫu.Các data này sẽ được lưu trữ tự động vào các file .yaml trong thư mục test/fixtures ở trên khi tester nhập dữ liệu mẫu.

Dưới đây là một ví dụ về YAML fixtures file:


#lo & behold!  I am a YAML comment!
david:
 name: David Heinemeier Hansson
 birthday: 1979-10-15
 profession: Systems development
steve:
 name: Steve Ross Kellock
 birthday: 1974-09-27
 profession: guy with keyboard

III.Excute Testing

  1. Unit Testing: Kiểm thử các môđun, chương trình riêng lẻ
  • Trước khi thực hiện Unit test,phải đảm bảo dữ liệu là mới nhất.

  • Running Unit Test

    Running test đơn giản là việc chạy thử nghiệm các file chứa testcase thông qua ngôn ngữ Ruby:

    $ ruby -Itest test/unit/post_test.rb

    Tất cả các phương thức kiểm tra từ testcase sẽ được thực hiện.

    Kết quả

Loaded suite unit/post_test
Started
.....
Finished in 0.023513 seconds.
1 tests, 1 assertions, 0 failures, 0 errors
  1. Integration Testing:kiểm thử tích hợp các unit

    Để thực hiện integration test ta sử dụng các Helpers Available:

    Helper Purpose
    https? Returns true if the session is mimicking a secure HTTPS request.
    https! Allows you to mimic a secure HTTPS request.
    host! Allows you to set the host name to use in the next request.
    redirect? Returns true if the last request was a redirect.
    follow_redirect! Follows a single redirect response.
    request_via_redirect(http_method, path, [parameters], [headers]) Allows you to make an HTTP request and follow any subsequent redirects.
    post_via_redirect(path, [parameters], [headers]) Allows you to make an HTTP POST request and follow any subsequent redirects.
    get_via_redirect(path, [parameters], [headers]) Allows you to make an HTTP GET request and follow any subsequent redirects.
    put_via_redirect(path, [parameters], [headers]) Allows you to make an HTTP PUT request and follow any subsequent redirects.
    delete_via_redirect(path, [parameters], [headers]) Allows you to make an HTTP DELETE request and follow any subsequent redirects.
    open_session Opens a new session instance.
  2. Functional Tests Controllers: phát hiện các sai sót về chức năng,không quan tâm đến cách cài đặt.

  • Sử dụng Available Request Types :get,post,put,head,delete
  • Rails cung cấp một số Fuller Functional Test Example : flash, assert_redirected_to, and assert_difference
  • Testing Views

IV.Conclusions

  • Rails cũng có khả năng tự động test tương tự như các ngôn ngữ lập trình khác.
  • Tuy nhiên,vẫn cần phải sử dụng manual testcase cho Rails Applications để hoàn thiện sản phẩm.

Created by Dang Duc Tam