我正在使用qunit(http://qunitjs.com)与Karma测试运行器(http://karma-runner.github.io/0.8/index.html)一起玩.我成功创建并运行了简单的测试(100%JavaScript),但现在我正在尝试使用HTML fixture来测试与DOM节点交互的代码.我可以通过这种方式在"文件"中声明它们来加载这些灯具:
{pattern: 'fixtures/myfixture.html', watched: true, served: true, included: false}
Run Code Online (Sandbox Code Playgroud)
它得到了karma的服务器,但我不明白我怎么能访问它的DOM :(
假设我的fixture是一个包含以下标记的简单html文件:
<div id="container">hello world</div>
Run Code Online (Sandbox Code Playgroud)
如何编写可以访问该节点(div)的测试?据我所知,"文档"与"静态"文件夹下的"context.html"文件有关...那么我的夹具的HTML在哪里?
我有一个标准的ASP.NET MVC(版本2预览2)解决方案,在单独的项目中实际项目和服务器端单元测试.
因为这个项目非常客户端,我想创建一个ClientTest项目,它使用QUnit来测试主项目.
我想过用单个HTML文件创建一个常规的ASP.NET webforms项目,该文件将加载我的Scripts /目录中的各种脚本并使用QUnit测试它们.不幸的是,这将产生另一个ASP.NET开发服务器.我可以在运行测试之前配置正在运行的MVC项目服务器的端口,但必须有一种更好的方法,不仅仅是将测试html文件放入主MVC项目中.
有谁知道更好的方法来解决这个问题?
假设我有一个实用函数,为了简单起见(真实的东西很复杂且无关紧要),返回当前窗口的查询字符串.
var someUtilityFunction = () {
return window.location.search.substring(1);
};
Run Code Online (Sandbox Code Playgroud)
现在我想在qUnit中对这个函数进行单元测试(不确定测试工具是否相关):
test('#1 someUtilityFunction works', function () {
// setup
var oldQS = window.location.search;
window.location.search = '?key1=value1&key2=value2&key3=value3';
var expectedOutput = 'key1=value1&key2=value2&key3=value3';
// test
equals(someUtilityFunction(),
expectedOutput,
'someUtilityFunction works as expected.');
// teardown
window.location.search = oldQS;
});
Run Code Online (Sandbox Code Playgroud)
这里的问题是设置window.location.search为不同的查询字符串会导致页面重新加载,实质上是进入无限的请求循环.有没有办法模拟window.location对象而不对someUtilityFunction函数进行任何更改?
QUnit有一个断言用于测试函数引发异常(QUnit/raise).是否可以 - 使用QUnit - 断言函数不会引发异常.
我意识到可以像下面的代码一样测试它:
try {
theTest();
ok(true);
} catch (e) {
ok(false, "Expected to succeed");
}
Run Code Online (Sandbox Code Playgroud)
但我认为使用QUnit应该是可能的.有线索吗?
在ajax请求中如何测试错误回调?是否可以模拟网络连接错误?
$.ajax({
url: "myUrl",
type: 'post',
dataType : "json",
data : ({
myJson
}),
success : function(jsonSaveResponse) {
},
error: function (xhr) {
}
});
Run Code Online (Sandbox Code Playgroud) 我正在使用Ember CLI,我正在尝试将代码覆盖率报告与使用testem运行的内置Qunit测试集成.我试图使用伊斯坦布尔,但我无法找到要检测的文件,因为它似乎在查看tmp目录.我尝试在我的testem.json中执行此操作:
{
"framework": "qunit",
"serve_files": [
"instrumented/components/*.js"
],
"before_tests": "istanbul instrument --output instrumented/components app/components",
"after_tests": "istanbul report",
"test_page": "tests/index.html",
"launch_in_ci": ["PhantomJS"],
"launch_in_dev": ["PhantomJS", "Chrome"],
"reporter": "tap"
}
Run Code Online (Sandbox Code Playgroud)
但我一直得到这样的错误:不行1错误---消息:>
fs.js:684
return binding.stat(pathModule._makeLong(path));
^
Error: ENOENT, no such file or directory '/Users/Robert/ui/tmp/class-tests_dist-hqZLfsWS.tmp/app/components'
at Object.fs.statSync (fs.js:684:18)
at InstrumentCommand.Command.mix.run (/usr/local/lib/node_modules/istanbul/lib/command/instrument.js:230:20)
at runCommand (/usr/local/lib/node_modules/istanbul/lib/cli.js:58:19)
at runToCompletion (/usr/local/lib/node_modules/istanbul/lib/cli.js:62:5)
at Object.<anonymous> (/usr/local/lib/node_modules/istanbul/lib/cli.js:67:5)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
Run Code Online (Sandbox Code Playgroud)
我也试过使用Karma,但我无法弄清楚配置.我也试过毯子,但这只是给了我一个虚假的报告,100%覆盖在已编译的代码上.
我不完全理解转换后的代码是如何工作的,我不确定最好的方法是什么,但我肯定会喜欢任何帮助,指出我如何获得一个很好的代码覆盖率报告的正确方向.
有没有人成功整合任何类型的代码覆盖率报告?
我想在上传文件的ember中创建一个基本的验收测试.我可以使用Pretender模拟服务器,但我需要知道如何input type="file"使用文件系统中的文件填充字段.所以问题基本上是:
fillIn帮助器?Rails.root用于此目的.在服务器端,我们有用于BDD开发的Rspec/Cucumber(ruby)vowsjs(node.js)
是否有在Web浏览器上使用的BDD框架(不是qUnit或YUI测试,因为这些只适用于TDD)?
直到现在我还习惯在ready()函数中编写我的所有代码,如:
$(document).ready(function() {
// all my code
});
Run Code Online (Sandbox Code Playgroud)
现在我看到使用这种方法,我的代码不是"单元可测试的",例如我无法从QUnit访问ready()内的东西.
构造与使用ready()函数兼容且能够进行测试的jQuery代码的正确方法是什么?
是否有一个良好的开源代码库或项目来学习和学习?
我已经开始使用QUnit来测试ASP.NET MVC3应用程序中某个页面的jQuery代码.到目前为止,我已经提供了一个HTML-mock,它正在测试的javascript文件中使用.是否可以让它引用应用程序使用的页面的实际HTML?
qunit ×10
javascript ×6
unit-testing ×5
jquery ×4
asp.net-mvc ×2
ember-cli ×2
ember.js ×2
tdd ×2
asp.net ×1
bdd ×1
broccolijs ×1
ember-qunit ×1
karma-runner ×1
query-string ×1
selenium ×1
testem ×1
testing ×1
yui ×1