2015-10-09 25 views
11

Trong thử nghiệm đơn vị, làm cách nào tôi có thể tạo thành phần tử tùy chỉnh (hoặc chế độ xem) và có quyền truy cập vào yếu tố DOM trực tiếp DOM?Làm cách nào để truy cập Phần tử DOM trong thử nghiệm đơn vị aurelia?

Tôi đọc this article được đến điểm mà phần tử tùy chỉnh được khởi tạo nhưng tôi không nghĩ rằng tôi có thể truy cập phần tử DOM.

BTW, tôi biết về thước đo góc và thử nghiệm từ đầu đến cuối nhưng đó không phải là những gì tôi đang tìm kiếm ở đây.


Cập nhật ngày 14 tháng 10 năm 2016:

tôi phát hiện ra rằng tôi có thể đăng ký một ví dụ như thế này để làm cho @inject(Element) công việc:

container = new Container().makeGlobal(); 
container.registerInstance(Element, document.createElement('div')); 
vm = BehaviorInstance.createForUnitTest(Test, {}, {}); 

mặc dù các công trình tiêm (Test tùy chỉnh của tôi phần tử lấy tham chiếu), điều đó không khiến aurelia làm bất cứ điều gì với phần tử. Mẫu của phần tử tùy chỉnh của tôi chưa được sử dụng và do đó, innerHtml của phần tử là <div></div>.

+0

Kiểm tra Jasmine-JQuery, bạn có thể sử dụng setF ixtures để tạo ra một số giao diện người dùng: https://github.com/velesin/jasmine-jquery – Andrew

+0

Theo một thành viên nhóm nghiên cứu cốt lõi của Aurelia, điều này chưa được hỗ trợ. Xem https://github.com/aurelia/framework/issues/230. – Sylvain

Trả lời

2

Sửa 2015/11/16:

Chúng tôi đang tìm cách để tạo ra các bài kiểm tra tích hợp sử dụng các yếu tố DOM thực tế khi chúng ta xây dựng ra một bộ kiểm tra mạnh mẽ hơn đối với một số được xây dựng trong các yếu tố tùy chỉnh/thuộc tính. Thanh toán các cam kết trong this branch để biết thêm chi tiết.


Dưới đây là một thử nghiệm đơn vị cho một yếu tố tùy chỉnh: https://github.com/aurelia/templating/blob/master/test/behavior-testing.js#L57

Để truy cập vào phần tử DOM thực tế, sử dụng thùng chứa dependency injection Aurelia của:

import {inject} from 'aurelia-framework'; 

@inject(Element) 
export class MyViewModelOrCustomElementOrAttribute { 
    constructor(element) { 
    // use the element 
    this.element = element; 
    } 
} 

Đơn vị kiểm tra sẽ có một cái gì đó như thế này:

let myvm =BehaviorInstance.createForUnitTest(MyViewModelOrCustomElementOrAttribute, attributesFromHTML, bindingContext); 
let actualDomElement = myvm.element; 
+0

Cảm ơn. Bài kiểm tra đơn vị bạn đã chỉ cho tôi không sử dụng 'Element'. Nếu tôi cố gắng lấy 'Element' được tiêm vào trong ví dụ của bạn, tôi sẽ gặp lỗi khi aurelia cố gắng tạo ra một đối tượng kiểu' Element' bằng cách gọi hàm tạo 'Element()' trong 'BehaviorInstance.createForUnitTest()'. Nếu tôi đặt điểm ngắt ở dòng đầu tiên của phép thử và thực hiện 'Element()' trong giao diện điều khiển, tôi nhận được lỗi giống như aurelia: 'Uncaught TypeError: constructor bất hợp pháp'. – Sylvain

+0

hmm - Tôi nghĩ rằng đó là nghĩa vụ phải làm việc- sẽ làm một số nghiên cứu và lấy lại cho bạn. –

+0

Ok. Cảm ơn rất nhiều. – Sylvain

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