2014-07-16 32 views
9

Chúng tôi có một số thước đo kết thúc để kiểm tra kết thúc cho ứng dụng AngularJS của chúng tôi trong một số tệp JS và chúng hoạt động tốt. Tuy nhiên, có rất nhiều mã trùng lặp trong suốt các thử nghiệm và chúng tôi muốn DRY lên.Làm thế nào để tái sử dụng mã trong Protractor/AngularJS Testing

Ví dụ: mỗi lần đăng nhập, chúng tôi phải nhấp vào phần tử văn bản, nhập tên người dùng và mật khẩu, sau đó nhấp enter. Và ngay bây giờ mọi tệp JS duy nhất đều có bản sao của hàm đăng nhập riêng được gọi trước mỗi lần kiểm tra.

Sẽ tốt hơn nếu cấu trúc lại chúng thành các mô-đun mà chúng tôi có thể nhập. Tôi đã tìm kiếm hàng giờ nhưng không tìm được giải pháp tốt.

Chúng ta nên làm như thế nào?

Trả lời

21

Bạn có thể tạo các module nodejs và bao gồm chúng trong cấu hình protractor

đăng nhập-helpers.js

exports.loginToPage = function() { 
    //nodejs code to login 
}; 

protractor.conf.js

exports.config = { 
    //... 
    onPrepare: function() { 
     protractor.loginHelpers = require('./helpers/login-helpers.js'); 
    } 
    //... 
}; 

trang. spec.js

it('should do smth',() => { 
    protractor.loginHelpers.loginToPage() 

    //expect(...).toBe(...); 
}); 
+4

Bạn có chắc chắn đăng nhập-giúp việc không nên được 'module.exports.loginToPage = function ...' – boatcoder

+0

Can bạn cho chúng tôi biết tại sao bạn ràng buộc hàm 'loginToPage' vào' xuất'? – Blaise

1

Nhóm của chúng tôi sử dụng Orchid-js với Jasmine và thước đo góc, được thiết kế để thực hiện chính xác việc này.

thử nghiệm của bạn

Describe('Login user',require('../login.js'))("username","password"); 

login.js

module.exports = function(username,password){ 
    describe('login the user',function(){ 
     it('should login the user',function(){ 
      element(by.id('usernameField')).sendKeys(username); 
      element(by.id('passwordField')).sendKeys(password); 
      element(by.id('loginButton')).click(); 
     }); 
    }); 
} 
Các vấn đề liên quan