基本上我是在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。
答案 0 :(得分:3)
好的,现在我的测试时间缩短到0.2秒,相当于一个改进,我相信你同意。
为我解决这个问题的步骤有两个:
步骤1)我进行了一次没有描述的测试,业力是在每次测试后每个“it”之后运行此测试。 一旦我添加了描述,我的运行时间下降到20秒。缺少描述的这个测试是使用mockjax导致我...
第2步)
Mockjax的默认响应时间为500毫秒。这花了我大约20秒。我将配置设置为$.mockjaxSettings.responseTime = 1; //1ms
,现在运行时间缩短到0.23秒。
希望这会有所帮助。