JS测试跑者html vs生产html?

时间:2012-12-26 20:11:27

标签: javascript jquery unit-testing tdd qunit

ANSWER :     根据SO之外的人的建议:将html放在视图文件中,并将它们注入到您的生产和testRunner页面中。问题解决了。

以下问题以粗体显示

假设我有一个方法可以在用户点击时将元素向左移动50px。

负责这个的功能是

function moveElemLeft($elem, iPxLeft){}

在我的测试脚本中,我基本上有:

test("test moves function left via css", 1, function(){
    //get first elem in test fixture.
    var $testFixture = $('#qunit-fixture').children().eq(0);
    var beforeLeft = $testFixture.css('left');
    moveElemLeft($testFixture, 50);
    var afterLeft = $testFixture.css('left');
    equal(beforeLeft-50, afterLeft);
});

在我的testRunner HTML中,我会有类似

的内容
 <head><script href="test.js" /></head>
    <body>
    <div id="qunit-fixture">
    <div id="testChild" class="absolute no-margins">
    </div></div>
    </body>

-----问题---- 我的函数在测试期间是否有可能正常运行,但在生产中没有正确运行,因为我在测试夹具中写的html显然是微不足道的?在我的测试运行器html文件中使用与生产中相同的html不是更好吗?

但要做到这一点,那就意味着在测试设置中,我必须将html从生产html文件复制到测试运行器文件中。这甚至可能吗?这里最好的做法是什么?

1 个答案:

答案 0 :(得分:0)

  

在我的测试运行器html文件中使用与生产相同的html不是更好吗?

除了单元测试之外,测试它是有用的。

我不会替换一个小的,自包含的测试,该测试表明当使用这样的测试在预期输入上运行时,该函数的行为与预期一致。

  

但要做到这一点,那就意味着在测试设置中,我必须将html从生产html文件复制到测试运行器文件中。这甚至可能吗?这里最好的做法是什么?

在生产HTML上运行测试(或者更确切地说,在专用测试服务器上单独安装它)。我会使用像Selenium这样的东西在浏览器(或浏览器集合)中测试整个页面,而不会将测试代码注入页面本身。