2013-07-11 71 views
6

我是AngularJs的新手,嘗試使用依賴性測試指令時出現問題(儘管指令本身按預期工作)。我無法在此處或在其他資源中找到任何答案。測試與依賴關係的angularjs指令

這裏是我的代碼:

指令:

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

服務(值):

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

測試:

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); 
    })); 
}); 

我的測試是與消息失敗:

Error: Expected '' to be '0.1'. 

這意味着配置值被正確注入,但$ complile沒有使用它。我真的很感激任何幫助。謝謝。

回答

3

您沒有指定指令的restrict屬性。 當你沒有指定它時,這意味着角度尋找app-version聲明爲屬性,而不是元素。

所以,你可以在限制屬性添加到指令或更改您的模板:

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

我已經試過了,以及調用'$範圍摘要()'直接,但沒有任何結果 - 我認爲,因爲該指令實際上並沒有使用範圍。 – Tiger

+0

查看編輯答案 –

+0

謝謝,它現在可行!然而,奇怪的是,在測試之外,它作爲元素和屬性都正常工作。 – Tiger