Jasmine Karma test runner的速度比它应该的慢
基本上,我是在杜兰达尔试驾我的淘汰版viewmodels 我最多进行80次测试,总运行时间为58秒 当我在以下地点观看视频时: 这家伙在3秒内完成了1500多项测试 看来我一定是做错了什么事 下面是我的一个测试示例,只是为了给我正在做的事情提供一些上下文Jasmine Karma test runner的速度比它应该的慢,jasmine,karma-runner,karma-jasmine,Jasmine,Karma Runner,Karma Jasmine,基本上,我是在杜兰达尔试驾我的淘汰版viewmodels 我最多进行80次测试,总运行时间为58秒 当我在以下地点观看视频时: 这家伙在3秒内完成了1500多项测试 看来我一定是做错了什么事 下面是我的一个测试示例,只是为了给我正在做的事情提供一些上下文 define(["doubles/TestCart", "komapping", "generators/BenefitGenerator"], function (vm, mapping, benefitGenerator) { de
define(["doubles/TestCart", "komapping", "generators/BenefitGenerator"],
function (vm, mapping, benefitGenerator)
{
describe('When retrieving the cart data', function ()
{
var benefitOne = benefitGenerator.generateBenefit();
var benefitTwo = benefitGenerator.generateBenefit({ Status: 1 });
var benefitThree = benefitGenerator.generateBenefit({ Status: 2 });
beforeEach(function (done)
{
vm.Reset();
$.mockjax({
url: "*/api/Benefits",
contentType: "application/json",
type: "get",
responseText: [
benefitOne,
benefitTwo,
benefitThree
],
onAfterComplete: function () { done(); }
});
//Act
vm.refresh();
});
it('should have the correct benefits', function ()
{
expect(vm.allBenefits()[0].Id()).toEqual(benefitOne.Id);
expect(vm.allBenefits()[1].Id()).toEqual(benefitTwo.Id);
expect(vm.allBenefits()[2].Id()).toEqual(benefitThree.Id);
});
it('should have the correct cart count', function () {
expect(vm.cartBenefitCount()).toEqual(1);
});
});
});
请注意,我没有最小化浏览器,我还不能完全使用新的jasmine 2.1 beforeach而不是beforeach(尽管在测试中这将是我运行时间的一半)
==附录==
我已经从测试中删除了所有的实现,我只是有一个空的descripe,前面没有,然后是两个空的descripe。每次跑步都需要半秒的时间。这似乎不是我的测试本身,而是配置,不知怎的,我会继续寻找
==附录2==
我现在把时间缩短到20秒。问题是我有一个没有“描述”的测试,它在所有其他测试中的每个测试之后运行这个测试。我的瓶颈现在似乎是mockjax,它需要500毫秒。好的,现在我的测试时间缩短到了0.2秒,我相信你会同意这一点 为我解决这个问题的步骤有两个: 步骤1)我有一个没有描述的测试,karma在每个测试的每一个“it”之后运行这个测试。 一旦我添加了描述,我的运行时间下降到20秒。这个缺少描述的测试使用的是mockjax,这导致我 步骤2) Mockjax的默认响应时间为500ms。这花了我大约20秒。我将配置设置为
$.mockjaxSettings.responseTime=1//1ms
现在运行时间降低到0.23秒
希望这能帮助其他人