Mar*_*kus 10 javascript qunit requirejs phantomjs grunt-contrib-qunit
我正在尝试使用requirejs和grunt-contrib-qunit设置QUnit环境.
这就是我所拥有的.
gruntfile:
qunit: {
all: {
options: {
urls: [
'http://localhost:8000/qunit/qunit-test-suite.html'
]
}
}
},
connect: {
server: {
options: {
port: 8000,
base: '.'
}
}
},
Run Code Online (Sandbox Code Playgroud)
qunit试验suite.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>QUnit Tests Suite: travis CI Test</title>
<link rel="stylesheet" href="../components/libs/qunit/qunit/qunit.css">
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<script src="../components/libs/qunit/qunit/qunit.js"></script>
<script>
QUnit.config.autoload = false;
QUnit.config.autostart = false;
</script>
<script data-main="qunit" src="../components/libs/requirejs/require.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
qunit.js:
require.config({
baseUrl: "../",
paths: {
'jquery': 'components/libs/jquery/dist/jquery.min',
// Test for Foo
'foo': 'components/app/foo/foo',
'test-Foo': 'components/app/foo/test-Foo'
},
shim: {
'QUnit': {
exports: 'QUnit',
init: function() {
QUnit.config.autoload = false;
QUnit.config.autostart = false;
}
}
}
});
require(['test-Foo'], function (Foo) {
QUnit.load();
QUnit.start();
});
Run Code Online (Sandbox Code Playgroud)
测试Foo.js:
define(['foo'], function(Foo) {
'use strict';
module("Foo");
test("Foo return Test", function() {
equal(Foo.foo(), "foo", "Function should return 'foo'");
equal(Foo.oof(), "oof", "Function should return 'oof'");
});
test("Bar return Test", function() {
equal(Foo.bar(), "barz", "Function should return 'bar'");
});
});
Run Code Online (Sandbox Code Playgroud)
问题是,当我在浏览器中打开test-suite.html时,一切正常.一旦发送到PhantomJS,我收到以下错误:
Running "connect:server" (connect) task
Started connect web server on http://localhost:8000
Running "qunit:all" (qunit) task
Testing http://localhost:8000/qunit/qunit-test-suite.html
>> PhantomJS timed out, possibly due to a missing QUnit start() call.
Warning: 1/1 assertions failed (0ms) Use --force to continue.
Aborted due to warnings.
Run Code Online (Sandbox Code Playgroud)
完整设置:https://github.com/markusfalk/test-travis
测试运行:https://travis-ci.org/markusfalk/test-travis
谢谢你的帮助 :)
在J\xc3\xb6rn的帮助下,我想出了一个可行的设置。技巧是在 QUnit 加载之前设置 requireJS(将 requireJS 配置移动到 config.js 并首先加载它)。
\n\n要求:
\n\nHTML 测试套件:
\n\n<!doctype html>\n<html>\n <head>\n <meta charset="utf-8">\n <title>QUnit Tests Suite: asdf</title>\n <link rel="stylesheet" href="../components/libs/qunit/qunit/qunit.css">\n </head>\n <body>\n\n <div id="qunit"></div>\n <div id="qunit-fixture"></div>\n\n <script src="config.js"></script>\n <script data-main="unit" src="../components/libs/requirejs/require.js"></script>\n\n </body>\n</html>\nRun Code Online (Sandbox Code Playgroud)\n\n配置文件
\n\nvar requirejs = {\n baseUrl: "../",\n paths: {\n //{{app}}\n \'foo\': \'components/app/foo/foo\',\n \'test-foo\': \'components/app/foo/test-foo\',\n\n //{{libs}}\n \'unit\': \'qunit/unit\',\n \'qunit\': \'components/libs/qunit/qunit/qunit\',\n \'jquery.exists\': \'libs/jquery.exists/jquery.exists\',\n \'jquery\': \'components/libs/jquery/dist/jquery.min\'\n },\n \'shim\': {\n \'jquery.exists\': [\'jquery\']\n }\n};\nRun Code Online (Sandbox Code Playgroud)\n\n单元.js
\n\nrequire([\n \'qunit\',\n \'test-foo\'\n],\nfunction(qunit, TestFoo) {\n TestFoo();\n qunit.start();\n});\nRun Code Online (Sandbox Code Playgroud)\n\n测试-foo.js:
\n\ndefine([\'jquery\', \'qunit\', \'foo\'], function($, qunit, Foo) {\n \'use strict\';\n return function() {\n qunit.module("Foo");\n qunit.test("Foo Test", function() {\n equal(Foo.saySomething(), "Hello", "returns \'Hello\'");\n });\n };\n});\nRun Code Online (Sandbox Code Playgroud)\n\n最后是我想测试的模块:
\n\ndefine([\'jquery\'], function($) {\n \'use strict\';\n var Foo = {\n saySomething: function() {\n return "Hello";\n }\n };\n return {\n saySomething: Foo.saySomething\n };\n});\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1294 次 |
| 最近记录: |