我想测试AJAX方法(vanillaXHR),但找不到使用Jest框架的方法。我为Jasmine找到了mock-ajax.js。问题是我找不到安装方法。在Jest中是否有更好的单元测试Ajax函数的方法? 最佳答案 jestapi发生了一些变化。这是我用的。它什么都不做,但足以呈现我的组件。constxhrMockClass=()=>({open:jest.fn(),send:jest.fn(),setRequestHeader:jest.fn()})window.XMLHttpRequest=jest.fn().mockImple
在我的代码中,我在点击window.confirm提示“确定”时触发回调,我想测试是否触发了回调。在sinon中,我可以通过以下方式stubwindow.confirm函数:constconfirmStub=sinon.stub(window,'confirm');confirmStub.returns(true);有没有办法在Jest中实现这种stub? 最佳答案 开个Jest,您可以使用global覆盖它们。global.confirm=()=>true开个Jest,每个测试文件都在自己的进程中运行,您不必重置设置。
目前我正在componentDidMount上手动初始化Quill编辑器,Jest测试对我来说失败了。看起来我得到的ref值在jsdom中是空的。这里有问题:https://github.com/facebook/react/issues/7371但看起来refs应该有效。有什么我应该检查的想法吗?组件:importReact,{Component}from'react';importlogofrom'./logo.svg';import'./App.css';classAppextendsComponent{componentDidMount(){console.log(this._
我刚刚开始使用Jest,并且已经成功编写了测试DOM的单元测试。我有一个library在屏幕上输入内容,所以我可以很好地进行测试。在某些情况下,我的库不会抛出错误,而是吐出console.warn或console.log。是否可以使用Jest来测试这些控制台消息是否正在发生? 最佳答案 您可以像这样通过spy设置console.log:global.console={warn:jest.fn(),log:jest.fn()}//runyourcodeexpect(global.console.log).toHaveBeenCalle
在Sinon我可以做以下事情:varmyObj={prop:'foo'};sinon.stub(myObj,'prop').get(functiongetterFn(){return'bar';});myObj.prop;//'bar'但是我怎样才能对Jest做同样的事情呢?我不能只用jest.fn()之类的东西覆盖函数,因为它不会替换getter"can'tsetthevalueofget" 最佳答案 对于遇到这个答案的其他人来说,Jest22.1.0引入了spyongetterandsettermethods的能力.编辑:如sc
我想测试在我的测试中是否调用了特定函数并使用了正确的参数。从JEST文档中我无法弄清楚什么是正确的方法。假设我有这样的东西://add.jsfunctionchild(ch){constt=ch+1;//noreturnvaluehere.Functionhassomeother"sideeffect"}functionmain(a){if(a==2){child(a+2);}returna+1;}exports.main=main;exports.child=child;现在在单元测试中:1.我想运行main(1)并测试它是否返回了2并且未调用child()。2。然后我想运行main
我在Jest模拟静态方法时遇到了麻烦。假设您有一个带有静态方法的A类:exportdefaultclassA{f(){return'a.f()'}staticstaticF(){return'A.staticF()'}}还有一个导入A的B类importAfrom'./a'exportdefaultclassB{g(){consta=newA()returna.f()}gCallsStaticF(){returnA.staticF()}}现在你想模拟A。模拟f()很容易:importAfrom'../src/a'importBfrom'../src/b'jest.mock('../src
这是fullminimalrepro给定以下应用:src/food.jsconstFood={carbs:"rice",veg:"greenbeans",type:"dinner"};exportdefaultFood;src/food.jsimportFoodfrom"./food";functionformatMeal(){const{carbs,veg,type}=Food;if(type==="dinner"){return`Goodevening.Dinneris${veg}and${carbs}.Yum!`;}elseif(type==="breakfast"){retur
我正在对两个非常复杂的对象进行比较,并尝试在expect中使用.toEqual方法。这是我的测试:it('checkifstepGroupsdataincontrolDatamatchesdatainliveData',()=>{varcontrolStore=data.controlStorevarliveStorereturngetData().then(result=>{liveStore=newStore()liveStore.loadData(JSON.parse(result))expect(controlStore).toEqual(liveStore)})})我对预期输
如何使用Jest测试输出随机的函数?像这样:importcuidfrom'cuid';constfunctionToTest=(value)=>({[cuid()]:{a:Math.random(),b:newDate().toString(),c:value,}});因此functionToTest('Somepredictablevalue')的输出将类似于:{'cixrchnp60000vhidc9qvd10p':{a:0.08715126430943698,b:'TueJan10201715:20:58GMT+0200(EET)',c:'Somepredictablevalue