草庐IT

jest-jasmine

全部标签

javascript - 使用 angular-mocks/jasmine 测试服务 - TypeError : undefined is not an object

我正在尝试使用jasmine/karma/phantomJS在我的Angular应用程序中测试一个简单的服务。Jasmine版本:2.4.1Angular/Angular模拟:1.5.7phantomJS:2.1.1QueryParameters.service.tests.js:(QueryParameters.service.js是app.service模块的一部分,实际上是一个工厂,而不是服务)describe('myApp.QueryParametersService',function(){varQueryParametersService;beforeEach(module

javascript - Jest 在第一次失败后停止测试套件

我正在使用Jest用于测试。我想要的是在当前测试套件中的测试失败时停止执行该测试套件。--bailoption这不是我需要的,因为它会在一个测试套件失败后停止其他测试套件。 最佳答案 感谢thiscommentongithub我能够使用自定义testEnvironment解决此问题。为此,jest-circus需要通过npm/yarn安装。值得注意的是jestwillsetjest-circustothedefaultrunnerwithjestv27.首先需要调整jest配置:jest.config.jsmodule.export

javascript - Jasmine spy callThrough 和 callFake

我有一个场景,我想在调用回调后在beforeEach上调用done()。我尝试按如下方式执行此操作:spyOn(scope,'onAdmin').and.callThrough().and.callFake(function(){done()})但我不确定我的行为是否正确。基本上我想要实现的是能够在每个回调完成它所做的事情后调用done()。更新:解决方案scope.onAdminBackup=scope.onAdmin;spyOn(scope,'onAdmin').and.callFake(function(admin){scope.onAdminBackup();done();})

javascript - jasmine.matchersUtil.equals 与 ===

我们开发了一组相当大的自定义jasmine匹配器,有助于使我们的代码更简洁并避免代码重复。我注意到一些自定义jasmine匹配器使用===相等性测试和一些jasmine.matchersUtil.equals。示例:toHaveHandCursor:function(){return{compare:function(actual){return{pass:actual.getCssValue("cursor").then(function(cursor){returncursor==="pointer";})};}};},toBeActive:function(){return{co

javascript - Jasmine :检查数组是否包含具有给定属性的元素

我正在使用Karma/Jasmine来测试给定的类。我需要测试数组是否包含具有给定属性的对象,即我不想指定整个对象(它相当大,如果必须的话,测试将变得难以维护)。我试过以下方法:expect(filters.available).toContain(jasmine.objectContaining({name:"majors"});但这给了我错误'jasmine'isnotdefined,我一直没能找出错误的原因。 最佳答案 在jasmine2.0中实现它的一种方法是使用自定义匹配器。我还使用lodash遍历数组和每个数组项内的对象

javascript - 用 promises 开 Jest 假计时器

在使用假计时器和promise的组合时,我在让Jest测试框架(版本23.2.0)正常工作时遇到了一些麻烦。我哪里错了?假设我有以下模块://timing.jsexportconsttimeout=ms=>newPromise(resolve=>{setTimeout(resolve,ms)})我的测试文件如下所示://timing.test.jsimport{timeout}from'./timing'describe('timeout()',()=>{beforeEach(()=>{jest.useFakeTimers()})it('resolvesinagivenamountof

javascript - Jasmine 2.0 如何在运行期望之前等待实时

我正在尝试测试postMessageAPI,因为在接收消息之前有轻微的延迟,我无法在发送消息后立即运行预期。在jasmine1.3中,我曾经在运行期望之前等待()几毫秒并且工作正常。然而,Jasmine2.0wait()已被弃用,现在看来setTimeout中的所有内容都不会运行,除非调用done()..不确定这一切是否都有意义,如果是的话,我希望得到一些关于如何解决这个问题的建议。谢谢! 最佳答案 这对我有用:beforeAll(function(done){setTimeout(done,5000);});beforeAll函数

javascript - 在 PhantomJS 中使用 Jasmine 测试 $interval

看来我的interval从未被触发。我有一个包含$interval的指令,我想测试它。我删除了所有与指令相关的代码,并在其Controller中添加了以下代码:window.called=0;window.interval=$interval(function(){window.called++;console.log('interval'+window.called);//4},10);console.log('initialized');//1测试看起来像这样:describe('myDirective',function(){beforeEach(module('myModule

javascript - 如何在 Jasmine 单元测试中使用 Sinon 模拟 jQuery 动画?

我有一个1秒的jQuery.animateAction,它在页面加载后5秒启动。我在我的Jasmine单元测试代码中设置了一个Sinon计时器,并在7秒后进行测试,以查看后动画属性是否符合预期。它不能正常工作,所以我在我的JasmineHTML测试页面上放置了一个动画实例,以便更好地查看发生了什么。在Firefox和Chrome中,页面加载,动画函数被调用,单元测试立即失败,然后(也是立即)动画可见。在IE、Opera和Safari中,页面加载,动画函数被调用,单元测试立即失败,动画永远不会出现。我希望的是以下内容(在所有浏览器中):页面加载,调用动画函数,动画瞬间完成,单元测试立即成

javascript - 为什么 Jasmine 被称为 "BDD"测试框架,即使不支持 "Given/When/Then"?

在介绍Jasmine,它说:Jasmineisabehavior-drivendevelopmentframeworkfortestingJavaScriptcode.我阅读了BDD的几篇文章,似乎我们应该使用“Given/When/Then”来定义“Scenario”,这就是“cucumber”所做的。但是在Jasmine中,我看不到任何这样的方法。即使Jasmine没有这样的概念,我们还能称其为“BDD”测试框架吗? 最佳答案 Jasmine不会阻止您使用given-when-then,下面的示例显示了在使用Jasmine时可以