草庐IT

unit-testing

全部标签

javascript - 函数式 javascript 和 RxJS 中的依赖注入(inject)和模拟

我正在尝试使用RxJS和函数组合将用经典OOJavascript编写的库重写为更具功能性和react性的方法。我从以下两个易于测试的函数开始(我跳过了Observables的导入):创建连接.jsexportdefault(amqplib,host)=>Observable.fromPromise(amqplib.connect(host))创建channel.jsexportdefaultconnection=>Observable.fromPromise(connection.createChannel())测试它们所需要做的就是注入(inject)amqplib或连接的模拟,并确

javascript - NodeJS - Jest 单元测试 process.on 回调中的 setTimeout

我正在尝试在我的process.on('SIGTERM')回调中使用Jest对计时器进行单元测试,但它似乎从未被调用过。我正在使用jest.useFakeTimers()虽然它似乎在一定程度上模拟了setTimeout调用,但它并没有在setTimeout.mock中结束检查时对象。我的index.js文件:process.on('SIGTERM',()=>{console.log('GotSIGTERM');setTimeout(()=>{console.log('Timerwasrun');},300);});setTimeout(()=>{console.log('Timer2w

javascript - 带有异步 forEach 循环的磁带 "test exited without ending"错误

我在做什么编辑:我创建了一个repo使用我的问题的简化版本重现问题。我正在尝试使用browserstack设置自动化前端测试,selenium-webdriver和tape.Moreabouttape这个想法是定义多个浏览器和设备,这些浏览器和设备必须用X数量的给定测试一个接一个地进行测试。在下面的例子中,我在OSX上只定义了一个测试和两个浏览器。为了只定义一次浏览器并处理测试,我创建了一个repotest-runner,它应该作为dev-dependency添加到需要的repos在给定的设备和浏览器上测试。test-runner使所有需要的测试都通过,启动第一个浏览器,在该浏览器上运

javascript - 是否可以在一个函数中定义一个 Jasmine 规范并且仍然有 beforeEach 应用于它?

我有很多几乎相同的测试。为了DRY和可扫描性,我想将测试抽象为一个函数,然后使用一些参数调用该函数。然后该函数将调用它并将规范添加到套件中。它似乎可以工作,除了规范不会以与其他规范相同的方式运行,并且beforeEach不会在公共(public)函数中定义的规范之前被调用。define(['modules/MyModule','jasmine/jasmine'],function(MyModule){describe('myModule',function(){functioncommonTests(params){it('shouldpassthistestOK',function(

javascript - 如何对 Angular-UI Bootstrap Modal 组件的 'resolve' 属性进行单元测试

我正在尝试编写一个单元测试,断言正确的变量正在从Angular-UIBootstrap发送到ui.bootstrap.modal的resolve属性组件。这是我目前所拥有的://Controllerangular.module('app').controller('WorkflowListCtrl',function($scope,$modal){//Setuptheeditcallbacktoopenamodal$scope.edit=function(name){varmodalInstance=$modal.open({templateUrl:'partials/editWork

javascript - 如何实际重置 $httpBackend 期望值?

我已经尝试并试图让它发挥作用。documentation充其量是简洁的:resetExpectations();-重置所有请求预期,但保留所有后端定义。通常,当您想要重用$httpBackendmock的相同实例时,您会在多阶段测试期间调用resetExpectations。每次我的第二个请求被调用时,我的结果总是有第一个结果的数据。看看这个fiddlehttp://jsfiddle.net/tbwn1gt0/2/我在第一次刷新后重置期望,然后设置新的期望/结果,然后再次刷新以产生不正确的数据。//---SPECS-------------------------varurl='/pa

javascript - 让 Jasmine 在服务器端运行

我正在尝试开始使用Node.JS在服务器端测试JavaScript我正在使用grunt,和grunt-jasmine-node,但我无法让它运行我的测试。它只是记录PSC:\Development\NET\Source\jsn>gruntRunning"jasmine_node"taskundefinedFinishedin0.001seconds0tests,0assertions,0failuresDone,withouterrors.这是我的Gruntfile.jsmodule.exports=function(grunt){grunt.initConfig({pkg:grunt

javascript - 为什么 React 需要 jsdom 进行测试?

在为React组件编写测试时,您必须将它们渲染到DOM中,以便断言它们的正确性。例如,如果你想测试某个类是否被添加到给定某个状态的节点,你必须渲染到DOM节点,然后通过普通的DOMAPI检查该DOM节点。问题是,考虑到React维护一个虚拟DOM来渲染它,为什么我们不能在组件渲染后就在虚拟DOM上断言?在我看来,这是拥有虚拟DOM之类的东西的一个很好的理由。我错过了什么吗? 最佳答案 你真的没有错过任何东西。我们正在努力让它变得更好。虚拟部分一直是React的一个非常重要的实现细节,没有以任何有用或可靠的方式暴露出来进行测试。我们的

javascript - 测试 Vue.js 组件

我想测试一个Vue.js组件,但我失败了。简单地说,我正在设置一个组件属性,我想断言它设置正确。如果这很重要,模块将加载导出,并使用Webpack输出JS。//componentexports=module.exports={};module.exports={data:function(){return{active:false};},methods:{'close':function(){console.log(this.active);//->truethis.active=false;console.log(this.active);//->false}}};//compone

javascript - 如何使用新的断言函数扩展 QUnit?

我想向QUnit添加新断言。我做了这样的事情:QUnit.extend(QUnit.assert,{increases:function(measure,block,message){varbefore=measure();block();varafter=measure();varpasses=before当我在测试中使用increases(foo,bar,baz)时,我得到了ReferenceError:increasesisnotdefined从浏览器控制台我可以看到increases与所有其他标准函数一起在QUnit.assert中找到:ok,等于、deepEqual等从控制台