tôi sử dụng John papa phong cách góc cạnh hướng dẫn điều khiển của tôi trông giống như:Làm thế nào để kiểm tra thử nghiệm đơn vị John papa vm.model với hoa nhài?
sau phong cách John papa style controller style guide:
function testController() {
var vm = this;
vm.model = { name: "controllerAs vm test" };
}
thử nghiệm mã của tôi trông giống như:
describe('Controller: testController', function() {
beforeEach(module('myApp'));
var testController;
beforeEach(inject(function ($controller) {
scope = {};
testController = $controller('testController', {
});
}));
it('should have vm.model defined and testController.vm.model is equal to controllerAs vm test', function() {
expect(testController.vm).toBeDefined();
expect(testController.vm.model).toBeDefined();
expect(testController.vm.model.name).toEqual("controllerAs vm test");
});
});
Kết quả:
thử nghiệm không thành công: Thông báo kết quả: Dự kiến không xác định được xác định. tại ngăn xếp
Vì vậy, câu hỏi của tôi là làm thế nào chúng ta có thể kiểm tra vm.model và các biến khác từ điều này? Tôi đã không tìm thấy dòng hướng dẫn thích hợp trong hướng dẫn dòng: controllers
làm chức năng câu trả lời của bạn có vẻ ổn nhưng ở đây vấn đề của tôi là khi tôi khởi tạo trình điều khiển bằng: testController = $ controller ('testController', { }); sau đó testController.vm sẽ hoạt động nhưng không hoạt động.Vì vậy, câu hỏi của tôi là để những kẻ đã làm việc với bộ điều khiển góc của john papa như cú pháp vm và thử nghiệm với hoa nhài. –
@UtpalKumarDas - Dưới mui xe '$ controller' chỉ gọi' new() ', vì vậy nó hoạt động theo cùng một cách. – Josh
@UtpalKumarDas - Tôi đã làm việc với Angular vài năm nay và đã làm rất nhiều thử nghiệm với Jasmine. Tôi đang cố gắng giải thích rằng đây không phải là một điều góc, mà là một cái JavaScript. 'vm' không phải là thuộc tính trên bộ điều khiển ... đó là một biến được đóng bởi phạm vi chức năng. Do đó nó sẽ ** không bao giờ ** tồn tại trên bộ điều khiển của bạn khi sử dụng theo cách này. '$ controller' không thay đổi cách JS hoạt động. – Josh