草庐IT

jest-jasmine

全部标签

javascript - Jest 中的 XMLHttpRequest 测试

我想测试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

javascript - 在 Jest 中 stub 窗口函数

在我的代码中,我在点击window.confirm提示“确定”时触发回调,我想测试是否触发了回调。在sinon中,我可以通过以下方式stubwindow.confirm函数:constconfirmStub=sinon.stub(window,'confirm');confirmStub.returns(true);有没有办法在Jest中实现这种stub? 最佳答案 开个Jest,您可以使用global覆盖它们。global.confirm=()=>true开个Jest,每个测试文件都在自己的进程中运行,您不必重置设置。

javascript - 在使用 react-test-renderer 的 Jest 快照测试中,Refs 为空

目前我正在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._

javascript - 如何使用 Jest 和 jsdom 来测试 console.log?

我刚刚开始使用Jest,并且已经成功编写了测试DOM的单元测试。我有一个library在屏幕上输入内容,所以我可以很好地进行测试。在某些情况下,我的库不会抛出错误,而是吐出console.warn或console.log。是否可以使用Jest来测试这些控制台消息是否正在发生? 最佳答案 您可以像这样通过spy设置console.log:global.console={warn:jest.fn(),log:jest.fn()}//runyourcodeexpect(global.console.log).toHaveBeenCalle

javascript - 如何用 Jest 模拟/替换对象的 getter 函数?

在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

javascript - 自定义 Jasmine 匹配器和 Protractor

我们添加了一个toHaveClass自定义jasmine匹配器,为了让它工作,我们必须将它添加到beforeEach()(在thistopic的帮助下)。并且,为了遵循DRY原则并避免在需要toHaveClass的规范中的每个beforeEach()中重复匹配器定义,我们添加了一个beforeEach()block直接进入onPrepare():onPrepare:function(){varjasmineReporters=require("jasmine-reporters");require("jasmine-expect");//...//custommatchersbefor

javascript - 如何使用 Jest 测试是否使用定义的参数( toHaveBeenCalledWith )调用了函数

我想测试在我的测试中是否调用了特定函数并使用了正确的参数。从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

javascript - 在 javascript 认为文档为 "ready"之前,如何让我的 jasmine 测试装置加载?

我相当确定问题是设置为在$(document).ready上运行的jquery绑定(bind)没有可用的固定html。因此,当我发生旨在通过jquery函数更改DOM的事件时,什么也没有发生,我的测试失败了。我看到了这个问题的“解决方案”here,但是对我有用的解决方案需要更改我的工作jquery函数以绑定(bind).live方法而不是.click方法。我有两个问题。首先,我不想更改我的工作代码以使测试正确通过。测试框架应该测试代码是否会在应用程序中工作,DOM加载和javascript绑定(bind)以正确的顺序发生。我对解决方案的第二个问题是.on和.delegate由于某种原因

javascript - 如何根据Jasmine 的SpecRunner.html 生成LCOV 报告?

我们使用Jasmine进行JavaScript单元测试。我们有一个SpecRunner.html文件来运行测试。是否存在一种工具,我可以将路径传递给SpecRunner.html和JavaScript(不是规范)文件目录的路径,它会生成LCOV报告。例如,像这样:phantomjsjasmine_lcov.jsSpecRunner.htmlWebContent/js 最佳答案 我同意@zaabalonso的观点Karma是正确的选择。由于您需要LCOV报告,因此您还需要karma-coverage插件并假设您想在CI中headles

javascript - Jasmine 2.0 SpecRunner 与 Karma

我刚开始使用Jasmine,并且能够很好地使用Html中的SpecRunner。然而,当我配置Karma时,我遇到了一个差异:describe('Calculator',function(){varobj;beforeEach(function(){//initializeobjectobj=newObject();this.addMatchers({toBeFive:function(){return{compare:function(actual,expected){return{pass:actual===5,message:actual+'isnotexactly5'}}};}