Karma测试运行器比它应该慢

时间:2014-12-11 14:50:47

标签: jasmine karma-runner karma-jasmine

基本上我是在durandal测试驾驶我的淘汰视图模型。

我进行了80次测试,总运行时间为58秒。

当我观看视频时:https://www.youtube.com/watch?v=5mHjJ4xf_K0#t=577 这家伙在3秒内完成了超过1500次测试。

似乎我必须做一些非常错误的事情。

这是我的一个测试的例子,只是为了给我正在做的事情提供一些背景。

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 beforeAll而不是beforeEach(尽管在测试中这将是我运行时间的一半)。

==补遗==

我已经删除了测试中的所有实现,我只有一个空的描述,每个之前没有,然后两个空的。每个运行需要半秒钟。看来这不是我的测试本身,而是配置不知何故,我会继续寻找。

==附录2 ==

我现在已经达到了20秒。问题是我进行了一次没有“描述”的测试,它在所有其他测试中的每个测试之后都运行了这个测试。我的瓶颈现在似乎是需要500毫秒的mockjax。

1 个答案:

答案 0 :(得分:3)

好的,现在我的测试时间缩短到0.2秒,相当于一个改进,我相信你同意。

为我解决这个问题的步骤有两个:

步骤1)我进行了一次没有描述的测试,业力是在每次测试后每个“it”之后运行此测试。 一旦我添加了描述,我的运行时间下降到20秒。缺少描述的这个测试是使用mockjax导致我...

第2步) Mockjax的默认响应时间为500毫秒。这花了我大约20秒。我将配置设置为$.mockjaxSettings.responseTime = 1; //1ms,现在运行时间缩短到0.23秒。

希望这会有所帮助。