Jest和jquery-i18next,不使用react

时间:2018-10-16 22:22:44

标签: javascript internationalization jestjs i18next

我真的需要一些帮助来弄清楚为什么'.localize()'无法与我的Jest测试套件一起使用。在各种测试中,我总是得到不及格的测试结果,因为显然 “ $(...)。localize不是函数”。

我的jestSetup文件具有global.localize = jest.fn();

问题似乎是我会遇到这样的事情:

it('should update with the right animal', () => {
  document.body.innerHTML =
   `<div class='hopScotch'></div>`
  superFunctionMango('OWL')

  expect($('.hopScotch').attr('data- 
   i18n')).toBe('OWL.#')

//and it allpasses except for app.localize

})

superFunctionMango在实际的js文件中看起来像这样:

function updateNewInvoiceFieldsWithCorrectDocType(bird) {
$("#newBarBird").attr("data-i18n", `${bird}.new`);
$(".newBirdTitle").attr("data-i18n", 
  `${bird}.#`);
$(".newBirdDate").attr("data-i18n", 
  `${bird}.date`);
$(".newBirdSelect").attr("data-i18n", `${bird}.name`);
$("#app").localize();

}

是$('#app')。localize()似乎总是把事情搞砸了。 ?

1 个答案:

答案 0 :(得分:0)

$.fn.extend({
 localize: jest.fn(),
 language: jest.fn(),
 i18n:{
 changeLanguage: jest.fn()
 }

});

弄清楚了,真的很简单。您要做的就是在setupJest.js中扩展jQuery的方法! :)