2013-07-11 32 views
6

Tôi mới dùng AngularJ và gặp sự cố khi thử kiểm tra chỉ thị với sự phụ thuộc (mặc dù chỉ thị chính nó hoạt động như mong đợi). Tôi không thể tìm thấy bất kỳ câu trả lời nào ở đây hoặc trên các tài nguyên khác.Kiểm tra angularjs chỉ thị với các phụ thuộc

Đây là mã của tôi:

Chỉ thị:

angular.module('MyApp') 
    .directive('appVersion', ['config', function (config) { 
    return function (scope, elm) { 
     elm.text(config.version); 
    }; 
    }]); 

Dịch vụ (giá trị):

angular.module('MyApp') 
    .value('config', { 
    version: '0.1' 
    }); 

Test:

describe('Directive: AppVersion', function() { 
    beforeEach(module('MyApp')); 

    var element; 

    it('should have element text set to config value', inject(function ($rootScope, $compile, config) { 
     var scope = $rootScope; 
     element = $compile('<app-version></app-version>')(scope); 
     expect(element.text()).toBe(config.version); 
    })); 
}); 

thử nghiệm của tôi là thất bại với thông điệp:

Error: Expected '' to be '0.1'. 

có nghĩa là giá trị cấu hình đã được tiêm đúng cách, nhưng $ complile không sử dụng. Tôi thực sự đánh giá cao sự giúp đỡ về điều này. Cảm ơn.

Trả lời

3

Bạn không chỉ định thuộc tính giới hạn của chỉ thị. Khi bạn không chỉ định nó, điều đó có nghĩa là giao diện của phiên bản ứng dụng được khai báo dưới dạng thuộc tính chứ không phải một phần tử.

Vì vậy, bạn có thể thêm các thuộc tính hạn chế để chỉ thị hoặc thay đổi mẫu của bạn:.

element = $compile('<div app-version></div>')(scope); 
+0

tôi đã cố gắng đó cũng như kêu gọi 'phạm vi $ digest() 'trực tiếp, nhưng không có bất kỳ kết quả - Tôi nghĩ vì chỉ thị không thực sự sử dụng phạm vi. – Tiger

+0

Xem câu trả lời đã chỉnh sửa –

+0

Cảm ơn bạn, nó hoạt động ngay bây giờ! Tuy nhiên, thật lạ khi nó hoạt động tốt bên ngoài thử nghiệm cả hai như là phần tử và thuộc tính. – Tiger

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