我有一个带有 Snake 类的非 AMD JavaScript 文件,如下所示:
// ./www/js/Snake.js
function Snake(initPos) {
this.pos = initPos;
}
// I want to unit test this method.
Snake.proptotype.move = function(dir) {
// Do things.
};
我编写了一个实习生模块来测试它:
// ./test/Snake.js
define([
'intern!object',
'intern/chai!assert',
"../www/js/Snake"
], function (registerSuite, assert, Snake) {
registerSuite({
name: 'Snake',
move: function () {
// Intern complains that this object is not a function.
var snake = new Snake([
{x: 0, y: 0},
{x: 1, y: 0},
{x: 2, y: 0}
]);
snake.move("right");
...
如何让实习生认识Snake类?
最佳答案
我发现问题所在了。在实习生配置文件中,我需要设置加载程序包选项,如下所示:
// ./tests/intern.js
define({
...
loader: {
packages: [ { name: 'app', location: 'www/js' } ]
},
...
然后在我的测试模块中我需要导入 Snake.js 文件:
// ./tests/Snake.js
define([
'intern!object',
'intern/chai!assert',
"intern/order!app/Snake.js"
], function (registerSuite, assert) {
registerSuite({
name: 'Snake',
move: function () {
var snake = new Snake([
{x: 0, y: 0},
{x: 1, y: 0},
{x: 2, y: 0}
]);
...
现在它不再提示 Snake 未定义。
关于intern - 如何使用 Intern 对非 AMD JavaScript 文件进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28522494/