2

回答: 根据 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 复制到测试运行程序文件中。这甚至可能吗?这里的最佳做法是什么?

4

1 回答 1

0

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

除了单元测试之外,测试它会很有用。

我不会用这样的测试替换一个小型的、独立的测试来证明当在预期的输入上运行时函数的行为符合预期。

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

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

于 2012-12-26T20:33:42.950 回答