我正在处理一些代码,我需要在其中测试函数抛出的异常类型(是TypeError、ReferenceError等吗?)。我当前的测试框架是AVA,我可以将它作为第二个参数t.throws方法进行测试,如下所示:it('shouldthrowErrorwithmessage\'UNKNOWNERROR\'whennoparamswerepassed',(t)=>{consterror=t.throws(()=>{throwError();},TypeError);t.is(error.message,'UNKNOWNERROR');});我开始用Jest重写我的测试,但找不到如何轻松地做到这
首先我想说我是RequireJS的新手,甚至是Jasmine的新手。我在使用SpecRunner时遇到一些问题并且需要JS。我一直在关注UziKilon和BenNadel(以及其他一些人)的教程,他们帮助了一些人,但我仍然遇到一些问题。似乎,如果在测试中抛出错误(我可以特别想到一个,类型错误),规范运行器html将显示。这告诉我我在javascript中遇到了一些问题。但是,在我修复这些错误后,不再显示HTML。我根本无法显示测试运行程序。有人能发现我的代码有什么问题会导致这个问题吗?这是我的目录结构:Root|->lib|->jasmine|->lib(containsallofth
首先我想说我是RequireJS的新手,甚至是Jasmine的新手。我在使用SpecRunner时遇到一些问题并且需要JS。我一直在关注UziKilon和BenNadel(以及其他一些人)的教程,他们帮助了一些人,但我仍然遇到一些问题。似乎,如果在测试中抛出错误(我可以特别想到一个,类型错误),规范运行器html将显示。这告诉我我在javascript中遇到了一些问题。但是,在我修复这些错误后,不再显示HTML。我根本无法显示测试运行程序。有人能发现我的代码有什么问题会导致这个问题吗?这是我的目录结构:Root|->lib|->jasmine|->lib(containsallofth
我们如何以编程方式清除Jasmine测试套件中的spy?谢谢。beforeEach(function(){spyOn($,"ajax").andCallFake(function(params){})})it("shoulddosomething",function(){//Iwanttooverridethespyonajaxhereanddoitalittledifferently}) 最佳答案 将isSpy设置为false是一个非常糟糕的主意,因为那时你会监视一个spy,当Jasmine在你的规范结束时清除spy时,你不会获取
我们如何以编程方式清除Jasmine测试套件中的spy?谢谢。beforeEach(function(){spyOn($,"ajax").andCallFake(function(params){})})it("shoulddosomething",function(){//Iwanttooverridethespyonajaxhereanddoitalittledifferently}) 最佳答案 将isSpy设置为false是一个非常糟糕的主意,因为那时你会监视一个spy,当Jasmine在你的规范结束时清除spy时,你不会获取
Jasmine具有内置匹配器toBe和toEqual。如果我有这样的对象:functionMoney(amount,currency){this.amount=amount;this.currency=currency;this.sum=function(money){returnnewMoney(200,"USD");}}并尝试比较newMoney(200,"USD")和sum的结果,这些内置匹配器不会按预期工作。我已设法基于自定义equalsmethod实现解决方法和自定义匹配器,但它似乎很有用。在Jasmine中比较对象的标准方法是什么? 最佳答案
Jasmine具有内置匹配器toBe和toEqual。如果我有这样的对象:functionMoney(amount,currency){this.amount=amount;this.currency=currency;this.sum=function(money){returnnewMoney(200,"USD");}}并尝试比较newMoney(200,"USD")和sum的结果,这些内置匹配器不会按预期工作。我已设法基于自定义equalsmethod实现解决方法和自定义匹配器,但它似乎很有用。在Jasmine中比较对象的标准方法是什么? 最佳答案
有没有办法在Jasmine之上构建的JavaScriptJest测试框架中实现代码覆盖?内部框架doesnot打印出它得到的代码覆盖率。我也试过使用Istanbul,blanket,和JSCover,但它们都不起作用。 最佳答案 使用Jest21.2.1时,我可以在命令行查看代码覆盖率,并通过将--coverage传递给Jest脚本来创建覆盖率目录。以下是一些示例:我倾向于在本地安装Jest,在这种情况下命令可能如下所示:npxjest--coverage我假设(虽然还没有确认),如果我全局安装Jest,这也会起作用:jest--c
有没有办法在Jasmine之上构建的JavaScriptJest测试框架中实现代码覆盖?内部框架doesnot打印出它得到的代码覆盖率。我也试过使用Istanbul,blanket,和JSCover,但它们都不起作用。 最佳答案 使用Jest21.2.1时,我可以在命令行查看代码覆盖率,并通过将--coverage传递给Jest脚本来创建覆盖率目录。以下是一些示例:我倾向于在本地安装Jest,在这种情况下命令可能如下所示:npxjest--coverage我假设(虽然还没有确认),如果我全局安装Jest,这也会起作用:jest--c
我想测试一个函数,它使用不同的参数调用外部API方法两次。我想用Jasminespy模拟这个外部API,并根据参数返回不同的东西。有没有办法在Jasmine中做到这一点?我能想出的最好办法是使用andCallFake进行黑客攻击:varfunctionToTest=function(){varuserName=externalApi.get('abc');varuserId=externalApi.get('123');};describe('myfn',function(){it('getsusernameandID',function(){spyOn(externalApi,'ge