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文件复制到测试运行器文件中。这甚至可能吗?这里最好的做法是什么?
答案 0 :(得分:0)
在我的测试运行器html文件中使用与生产相同的html不是更好吗?
除了单元测试之外,测试它是有用的。
我不会替换一个小的,自包含的测试,该测试表明当使用这样的测试在预期输入上运行时,该函数的行为与预期一致。
但要做到这一点,那就意味着在测试设置中,我必须将html从生产html文件复制到测试运行器文件中。这甚至可能吗?这里最好的做法是什么?
在生产HTML上运行测试(或者更确切地说,在专用测试服务器上单独安装它)。我会使用像Selenium这样的东西在浏览器(或浏览器集合)中测试整个页面,而不会将测试代码注入页面本身。