angularjs - निर्देशों के लिए यूनिट परीक्षणों में कोणीय अनुवाद फ़िल्टर का नकल कैसे करें




unit-testing angular-translate (2)

नीचे फ़िल्टर का नकल कैसे कर सकते हैं इसका एक सरल उदाहरण है।

var mockTranslateFilter;

beforeEach(function() {
  module(function($provide) {
    $provide.value('translateFilter', mockTranslateFilter);
  });

  mockTranslateFilter = function(value) {
    return value;
  };
});

मेरे निर्देश टेम्पलेट्स में, मुझे कोणीय अनुवाद फ़िल्टर का उपयोग इस प्रकार करने की आवश्यकता है:

    <label for="data-source-btn">
      <span id="data-source-btn-span"></span>
      {{'Data Source' | translate}}
    </label>

फिर इस निर्देश के लिए मेरे यूनिट परीक्षण में, मुझे त्रुटि मिलती है:

अज्ञात प्रदाता: अनुवादफिल्टरप्रोवाइडर <- translateFilter

मैंने $filter इंजेक्शन करने और $translate = $filter('translate'); द्वारा $translate = $filter('translate'); प्राप्त करने का प्रयास किया है $translate = $filter('translate'); जो समस्या का समाधान नहीं करता है - यह वास्तव में फ़िल्टर का परीक्षण करने के लिए है

मैं मॉड्यूल pascalprecht.translate इंजेक्षन कर सकते हैं, लेकिन वह भारी हाथ है। मैं फिल्टर का सबसे अच्छा नकल कैसे करूं?


यह ES6 तरीका है:

beforeEach(angular.mock.module('myModule'), ($provide) => {
    $provide.value('$translate', t => ({ then: cb => cb(t) }));
}));   

यह $ translate.instant विधि का नकल नहीं करता है। इसके लिए आप एक चर को फ़ंक्शन असाइन कर सकते हैं और फिर instant संपत्ति को कोणीय। पहचान विधि असाइन कर सकते हैं।







angular-filters