2014-10-14 17 views
5

Tôi đang sử dụng Rails + AngularJS và đã chuyển sang sử dụng Thước đo cho tất cả các kết thúc của tôi để kết thúc kiểm tra. Tôi đã thiết lập nó bằng cách sử dụng protractor-rails gem giúp tôi sử dụng cơ sở dữ liệu thử nghiệm thay vì phát triển cơ sở dữ liệu cho các thử nghiệm của tôi.làm sạch sau khi thử nghiệm Thước đo

Vấn đề là sau khi tôi chạy thử nghiệm ví dụ: 'create_client_spec.js.coffee', sau đó tôi còn lại với một khách hàng mới trong bảng của tôi mà không được làm sạch sau khi thử nghiệm của tôi.

helper = require('../../helper.js.coffee') 

describe('create a new client', -> 

    beforeEach -> 
    helper.login() 

    afterEach -> 
    helper.logout() 

    it 'shows the client after creation', -> 
    browser.get('/api#/clients') 
    element(By.id("new_btn")).click() 

    element(By.id("name")).sendKeys("John Smith") 
    element(By.id("create_btn")).click() 

    expect(element(By.id("heading")).getText()).toContain("John Smith") 

) 

Làm cách nào để dọn dẹp các thử nghiệm này một cách độc đáo?

Một ý tưởng tôi có là thêm phương thức trong afterEach để xóa ứng dụng khách mới sau mỗi lần thử nghiệm trong tệp này.

Cập nhật:

Tôi đã đặt sau trong helper.js.coffee tôi

delete_client: -> 
    last=element.all(By.id("listing")).last() 
    last.element(By.id("delete")).click() 
    this.accept_dialog() 

    accept_dialog: -> 
    # Accept the dialog which is displayed 
    ptor = protractor.getInstance() 
    alertDialog = ptor.switchTo().alert() 
    alertDialog.accept() 

Sau đó tôi gọi là helper.delete_client() trong khối afterEach tôi trước khi đăng xuất. Nó hoạt động, nhưng có cách nào tốt hơn không?

+0

Bạn có biết về chức năng tùy chọn 'onCleanUp' trong [protractor config] (https://github.com/angular/protractor/blob/master/docs/referenceConf.js#L195) không? – glepretre

+0

Tôi không biết về tùy chọn onCleanUp này, tôi có thể gọi một công việc cào trong onCleanUp không? – map7

+0

Tôi không chắc chắn về điều đó, nó sẽ tự động được gọi vào cuối tất cả các bài kiểm tra của bạn, đó là tất cả những gì tôi biết. – glepretre

Trả lời

1

Làm cách nào để dọn dẹp các thử nghiệm này một cách độc đáo?

Có vẻ như định nghĩa của bạn là cleanup là bạn bắt đầu lại, tức là bắt đầu bằng phần tử tươi listing và hộp thoại không mở. Vì bạn delete thành phần cuối cùng mà mọi thử nghiệm của bạn bắt đầu với danh sách trống.

tức là bạn muốn bắt đầu lại từ đầu.

Sau khi hack có thể giúp đỡ và đảm bảo chúng rất sạch sẽ nhưng có thể làm chậm các bài kiểm tra của bạn.

browser.get('<your root URL>'); 

Nếu đây là "quá nhiều làm sạch" cho bạn sau đó lựa chọn afterEach của bạn là thực sự không xấu tuy nhiên bạn kết thúc thử nghiệm trường hợp sử dụng 'xóa' bạn theo cách bạn đã được mã hóa.

//note I have not run this snipped this so it is not syntax free 
listing=element.all(By.id("listing")) 
listing.innerHTML = '';//or whatever should be the default 
OR 
listing.removeChild(listing.last()); 

Giới thiệu về hộp thoại mở.

Có vẻ lạ khi element(By.id("create_btn")).click() không đóng hộp thoại nhưng tôi biết trường hợp sử dụng.

Để xóa hộp thoại, bạn có thể thực hiện theo các kỹ thuật thao tác DOM tương tự và chỉ xóa DOM đó nếu không bạn cũng sẽ thử nghiệm trường hợp sử dụng khác.

+1

Bằng cách dọn dẹp, tôi có nghĩa là bắt đầu lại với dữ liệu hạt giống của tôi chứ không phải các mục mới tôi đã nhập. Nó sẽ là tốt để quay trở lại một ảnh chụp nhanh của cơ sở dữ liệu trong thời gian nhanh chóng. – map7

+1

Với SPA, Kiến trúc là REST và phần phụ trợ duy trì trạng thái nhờ sử dụng cơ sở dữ liệu. Nó chuyển sang trạng thái mới. Đây là miền vấn đề phụ trợ. Vì vậy, nếu có thể bạn có thể muốn tránh phải dựa vào trạng thái phụ trợ. Tất cả những vấn đề này trở thành điểm tranh luận khi chúng tôi tập trung vào việc kiểm tra mã "UI" thay vì mã xuất phát từ chương trình phụ trợ.Vì vậy, thay vì thử nghiệm/xác minh "Tôi phải có 5 danh sách trên trang", bạn có thể muốn kiểm tra/xác minh rằng "nhiều danh sách được hiển thị trên trang". Điều này sẽ lấy đi cơ sở dữ liệu/kiểm thử backend là một khu vực riêng biệt của các dịch vụ REST thử nghiệm. – bhantol

Các vấn đề liên quan