使用Chai Test:添加react-slick throws错误 - matchMedia不存在

时间:2017-02-20 14:20:12

标签: webpack slider chai matchmedia react-slick

在我的webpack项目中添加react-slick滑块后,我的chai测试开始失败

C:\project\proj\js\node_modules\enquire.js\dist\enquire.js:226
            throw new Error('matchMedia not present, legacy browsers require a polyfill');
            ^

Error: matchMedia not present, legacy browsers require a polyfill
    at Object.MediaQueryDispatch (C:\project\proj\js\node_modules\enquire.js\dist\enquire.js:226:19)
    at C:\project\proj\js\node_modules\enquire.js\dist\enquire.js:291:9
    at i (C:\project\proj\js\node_modules\enquire.js\dist\enquire.js:11:20)
    at Object.<anonymous> (C:\project\proj\js\node_modules\enquire.js\dist\enquire.js:21:2)

滑块组件的作者推荐here这个问题的唯一解决方法是开玩笑。我在我的环境中尝试过但它没有用。

2 个答案:

答案 0 :(得分:0)

解决方案应该基于你的测试运行员一般你必须模拟 window.matchMedia

window.matchMedia = () => ({
  matches : false,
  addListener : () =>{},
  removeListener: () =>{},
});

window.matchMedia = function(){
  matches : false,
  addListener : function() {},
  removeListener: function() {},
};

如果您的窗口未定义,您可能会尝试将其附加到测试跑步者使用的全局对象。

希望这会有所帮助,祝你好运

答案 1 :(得分:0)

我正在使用摩卡咖啡。

我在dom.js

中添加了它
window.matchMedia || (
    window.matchMedia = function () {
        return {
                  matches: false,
                  addListener() {},
                  removeListener() {},
        };
    }
);

所以我可以使用此命令来调用它。

mocha --compilers js:babel-register --require dom.js --recursive