草庐IT

jest-jasmine

全部标签

javascript - 为什么在构造函数中直接创建 ES6 类的实例时 Jest 的 toThrow 不起作用?

classTestObject{constructor(value){if(value===null||value===undefined){thrownewError('Expectavalue!');}}}describe('testtheconstructor',()=>{test('itworks',()=>{expect(()=>{newTestObject();}).toThrow();});test('notwork',()=>{expect(newTestObject()).toThrow();});});此处有2个测试用例,一个有效,另一个无效。notwork的失败消

javascript - 使用 jasmine 监视构造函数

我想监视构造函数并使用jasmine告诉它被调用了多少次。我通常会做这样的事情来定位对象的方法:spyOn(lib,'methodName')但在这种情况下,我试图监视实际的构造函数,所以我尝试过:spyOn(lib);it('libshouldbeinstantiatedforeachmatchingelement',function(){spyOn(lib);expect(lib.calls.count()).toEqual(2);});不幸的是,这只会在控制台中给我一个错误:"Error:undefined()methoddoesnotexistin..."我如何监视构造函数?

javascript - Jest URL.createObjectURL 不是函数

我正在开发一个reactJs应用程序。我正在使用jest来测试我的应用程序。我想测试一个下载blob的函数。但不幸的是我收到了这个错误:URL.createObjectURLisnotafunction我的测试函数:describe('download',()=>{constdocumentIntial={content:'aaa'};it('msSaveOrOpenBlobshouldnothavebeencalledwhennavigaoisundefined',()=>{window.navigator.msSaveOrOpenBlob=null;download(documen

javascript - 在一次执行中多次运行 Jasmine Spec

我想在一次执行中多次运行我的jasmine测试用例。是否有任何循环或任何其他方法在一次执行中执行特定规范。 最佳答案 您可以像这样在普通的for循环中运行规范:for(vari=0;i=0&&r如果你想用不同的参数运行它,那就有点棘手了。您必须将循环参数绑定(bind)到闭包范围,否则将始终使用循环参数的最后一个值调用测试。//WRONG:testcalled10timeswithi==10for(vari=0;i 关于javascript-在一次执行中多次运行JasmineSpec,我

javascript - 标签 Protractor + Jasmine 运行套件

我正在尝试找出一种方法,以相同的方式,或者更确切地说,以类似的方式使用cucumberJS与protractor的标记选项,但是使用Jasmine,有没有办法标记不同的场景,例如:@smoke、@regression等。然后告诉控制台与那些一起运行?我拒绝使用Cucumber,因为它的支持似乎变得不稳定了!任何帮助将不胜感激! 最佳答案 使用jasmine2,您可以使用正则表达式过滤测试。也许你可以在你的测试中添加@smoke、@regressions之类的东西,然后只通过传递grep标志来运行那些:it('shoulddostuf

javascript - 在 Jest 中手动模拟对象

我正在尝试找出Jest中的手动模拟。我认为这应该很容易……但事实并非如此。我的项目目录是这样的__测试__用户测试.js模特user.js__模拟__user.js节点模块...package.jsonmodels/user.js和models/__mocks__/user.js都有相同的代码:module.exports={create(username,password){returnnewPromise(function(resolve,reject){setTimeout(function(){resolve({"username":username,"password":pa

javascript - Jest 自定义匹配器

我正在尝试在Jest中创建一个类似于stringMatching但接受空值的自定义匹配器。但是,文档没有说明如何重用现有的匹配器。到目前为止,我有这样的东西:expect.extend({stringMatchingOrNull(received,argument){if(received===null){return{pass:true,message:()=>'Stringexpectedtobenull.'};}expect(received).stringMatching(argument);}});我不确定这是正确的方法,因为当我调用stringMatching匹配器时我没有

javascript - 指定 jest 测试文件目录

我是单元测试的新手,我只想测试位于特定目录中的文件我如何指定我希望测试仅对特定目录中的文件运行而忽略其他目录所以我已经通过npm安装了jest"jest":"^23.6.0",并通过在package.json中指定了我的测试命令scripts:{"test":"jest--verbose"}以上运行所有文件,但我希望它运行特定目录中的文件,例如仅最新目录我该如何进行 最佳答案 添加目录名作为参数scripts:{"test":"jest--verbose./my-directory"}

javascript - Jest : mocking console. 错误 - 测试失败

问题:我有一个简单的React组件,我正在使用它来学习使用Jest和Enzyme测试组件。在处理Prop时,我添加了prop-types模块来检查开发中的属性。prop-types使用console.error在未传递必需的props或props是错误的数据类型时发出警报。我想模拟console.error来计算它在我传入丢失/错误输入的props时被prop-types调用的次数。使用这个简化的示例组件和测试,我希望这两个测试的行为如下:具有0/2个所需Prop的第一个测试应该捕获模拟调用两次。具有1/2必需Prop的第二个测试应该捕获调用一次的模拟。相反,我得到了这个:第一个测试运

javascript - Jest react 测试 : Check state after delay

在Jest文档的帮助下尝试创建测试时我真的很困惑https://facebook.github.io/jest/docs/timer-mocks.html#content我正在尝试检查容器安装时的状态,然后几秒钟后,在我手动设置状态中的值(使用setTimeout())之后。我在Main的componentDidMount中有一个这样的函数:componentDidMount(){this.setStateAfterDelay();}函数的作用是:setStateAfterDelay=()=>{setTimeout(()=>{this.setState({fruits:['banana