5

Tôi mới làm quen với hoa nhài và hoa nhài, và tôi gặp vấn đề khi cài đặt maven để chạy các bài kiểm tra đơn vị trên một ứng dụng góc. Tôi gặp rắc rối ngay khi tôi thêm angular-mocks.js vào thư mục test/javascript/lib.angular-mock.js xung đột với htmlunit? Làm thế nào để kiểm tra ứng dụng góc sử dụng angular-mock.js trong maven-jasmine

mvn test ném một htmlunit.ScriptException chỉ bằng cách thêm tệp mock góc. Nếu tôi loại bỏ các tập tin, nó chạy tốt (không có các bộ phận dựa vào chế nhạo tất nhiên, nhưng họ không thành công như một bài kiểm tra đơn vị hơn là ném một lỗi).

Có ai biết điều gì có thể gây ra lỗi này và cách sửa lỗi không?


EDIT
tôi stronly nghi ngờ rằng đây là một HtmlUnit vấn đề , bởi vì các lỗi khác khi thay đổi <browserVersion>:

CHROME cho:

TypeError: Cannot find function attachEvent in object [object HTMLDocument]. (http://localhost:55408/src/lib/angular.js#1568)

FIREFOX_3_6 cho:

Exception invoking Node.removeEventListener() with arguments [String, NativeArray, Boolean]

INTERNET_EXPLORER_9 cho:

Exception invoking Node.detachEvent() with arguments [String, NativeArray]


Stack trace (trích đoạn FF):

[ERROR] Failed to execute goal com.github.searls:jasmine-maven-plugin:1.3.1.2:test (default) on project my-jasmine-project: The jasmine-maven-plugin encountered an exception: 
[ERROR] java.lang.RuntimeException: org.openqa.selenium.WebDriverException: com.gargoylesoftware.htmlunit.ScriptException: Exception invoking Node.removeEventListener() with arguments [String, NativeArray, Boolean] 
[ERROR] Build info: version: '2.32.0', revision: '6c40c187d01409a5dc3b7f8251859150c8af0bcb', time: '2013-04-09 10:39:28' 
[ERROR] System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.8.4', java.version: '1.6.0_51' 
[ERROR] Driver info: driver.version: HtmlUnitDriver 
[ERROR] at com.github.searls.jasmine.runner.SpecRunnerExecutor.execute(SpecRunnerExecutor.java:39) 
... 

pom.xml (trích đoạn):

<plugin> 
    <groupId>com.github.searls</groupId> 
    <artifactId>jasmine-maven-plugin</artifactId> 
    <version>1.3.1.2</version> 
    <configuration> 
    <preloadSources> 
     <source>lib/angular.js</source> 
     <!-- <source>lib/angular-mocks.js</source> --> 
     <source>http://code.angularjs.org/1.1.5/angular-mocks.js</source> 
    </preloadSources> 
    </configuration> 
    <executions> 
    <execution> 
     <goals> 
     <goal>test</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

Cả thêm góc-mocks .js vào thư mục test/javascript/lib và referenc ing nó trực tiếp từ trang web angularjs cung cấp cho cùng một lỗi.

+0

Các thử nghiệm tương tự chạy tốt bằng cách sử dụng Karma (thay vì Maven), ngay cả khi bao gồm angular-mocks.js. Vì vậy, vấn đề là gần như chắc chắn với Maven hoặc plugin Jasmine. –

Trả lời

8

Trong phiên bản trình duyệt CHROME, lỗi xảy ra khi góc cố gắng tải JQLite một tập con tương thích api của thư viện jQuery cho phép góc để thao tác DOM. Tôi đã có thể khắc phục vấn đề bằng cách tải xuống các phiên bản chưa được giải nén của jQuery (v1.10.2), góc (v1.0.7) và các mock góc (v1.0.7). Tôi đã thêm phần sau vào cấu hình trong plugin jasmine-maven.

<preloadSources> 
    <preloadSource>${angular-test-deps}/jQuery.js</preloadSource> 
    <preloadSource>${angular-test-deps}/angular.js</preloadSource> 
    <preloadSource>${angular-test-deps}/angular-mocks.js</preloadSource> 
</preloadSources> 

Các tài liệu góc khẳng định rằng "Real jQuery luôn được ưu tiên hơn jqLite, với điều kiện nó đã được nạp trước khi DOMContentLoaded sự kiện sa thải" (dòng 1448 của 1.0.7 không nén). Bản sửa lỗi này vẫn không thành công với phiên bản trình duyệt CHROME nhưng hoạt động với FIREFOX_3_6, FIREFOX_17, INTERNET_EXPLORER_9, INTERNET_EXPLORER_8 và INTERNET_EXPLORER_7. Plugin hoa nhài-maven mặc định là phiên bản borwser FIREFOX_3_6 nên không cần phải chỉ định phiên bản trình duyệt.

+0

Điều này đã làm các trick. Đó là một giải pháp tốt hơn so với sử dụng PhantomJs, đó là những gì tôi đã làm cho đến nay. Tôi đã sử dụng JQuery đã có trong dự án vì vậy nó thậm chí không thêm phụ thuộc thêm. Cảm ơn! –