我使用的是QUnit+Sinon.js,它在本地运行得很好。当我试图将它构建成一个连续的集成过程时,出现了这个问题。我正在使用js-test-driver框架,以便能够在持续集成环境中运行它。在过去,我在没有使用Sinon.js的情况下使用它,这没有任何问题。但是在我添加了Sinon.js插件后,它根本不能工作。当我尝试运行我的测试时,它显示:
D:/my/project/url/contentTest.js:60: TypeError: qTest is not a function
Total 0 tests (Passed: 0 Fails: 0 Errors: 0)(0.00 ms)我的js-test-driver配置:
server: http://localhost:9879
load:
# QUnit related files
- qunit/lib/equiv.js
- qunit/lib/QUnitAdapter.js
- qunit/plugin/sinon-1.6.0.js
- qunit/plugin/sinon-qunit-1.0.0.js
# Dependencies
- external/jquery/1.7.2/jquery.min.js
# Files under test
- content.js
# Tests
- contentTest.js有趣的是,有一个运行良好的QUnit index.html文件(当我打开这个html时,所有测试都通过了):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>my tests</title>
<link rel="stylesheet" href="./qunit/lib/qunit-1.11.0.css">
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<!-- core -->
<script src="./qunit/lib/qunit-1.11.0.js"></script>
<script src="./qunit/plugin/sinon-1.6.0.js"></script>
<script src="./qunit/plugin/sinon-qunit-1.0.0.js"></script>
<!-- dependencies -->
<script src="./external/jquery/1.7.2/jquery.min.js"></script>
<!-- under test -->
<script src="./content.js"></script>
<!-- tests -->
<script src="./contentTest.js"></script>
</body>
</html>所以看起来js-test-driver和Sinon.js有冲突。如果我删除所有相关的Sinon.js测试和包含的sinon插件,它就可以工作。如果我只是删除与sinon相关的测试,它仍然失败。如果我没有删除sinon.js,而是删除了所有测试并创建了一个带有"ok(true)“断言的emty测试,那么它仍然会失败,并显示相同的错误消息(contentTest.js:60: TypeError: qTest不是一个函数),但是我的测试文件只有10行(当我的文件只有10行时,它怎么会是第60行的错误呢?)。
提前感谢大家的帮助!
发布于 2013-08-26 11:38:14
这不是一种解决方案,而是一种获取更多信息的方法:可以从shell本地运行js-test-driver脚本吗?它是否会产生类似的错误详细信息?至少,这将给你更多的信息和更短的反馈循环。
https://stackoverflow.com/questions/16353597
复制相似问题