Javascript Yui测试-组织文件
我希望在我的网站上实施“Yui测试”,以使用TDD方法。我还安装了yuitest CLI(npm安装-g yuitest) 我不知道如何组织我的文件,我想把js代码留在我的“www/js/functions.js”文件中,然后创建一个新文件“www/js/tests.js”,将我的测试放在哪里 问题是我不知道如何连接不同的文件。我会尽力解释的 在我的“www/js/tests.js”文件中,我有以下代码(通过网站上的示例): 在我的“www/js/functions.js”文件中,我有一个函数:Javascript Yui测试-组织文件,javascript,tdd,yui,Javascript,Tdd,Yui,我希望在我的网站上实施“Yui测试”,以使用TDD方法。我还安装了yuitest CLI(npm安装-g yuitest) 我不知道如何组织我的文件,我想把js代码留在我的“www/js/functions.js”文件中,然后创建一个新文件“www/js/tests.js”,将我的测试放在哪里 问题是我不知道如何连接不同的文件。我会尽力解释的 在我的“www/js/tests.js”文件中,我有以下代码(通过网站上的示例): 在我的“www/js/functions.js”文件中,我有一个函数:
function sortArray(array) {
if (array instanceof Array){
array.sort();
} else {
throw new TypeError("Expected an array");
}
}
显然它不起作用,因为当我运行测试“yuitest www/js/tests.js”时,它没有在“www/js/functions.js”文件中看到我的函数
显然,如果我将函数从“www/js/functions.js”文件移动到“www/js/tests.js”文件,它就会工作
但是我需要把这些文件分开。有什么建议吗
谢谢 一种替代方法是使用模块。在YUI中添加一个模块,并在测试中使用它。如果使用名称空间,它可能如下所示: 在
www/js/functions.js
中:
YUI.add('my-module', function (Y) {
Y.namespace('MyNamespace');
Y.MyNamespace.SortArray = function(array) {
if (array instanceof Array){
array.sort();
} else {
throw new TypeError("Expected an array");
}
}
});
YUI().use('test', 'my-module', function (Y) {
var testCase = new Y.Test.Case({
name: "TestCase Name",
//---------------------------------------------
// Tests
//---------------------------------------------
testSortArray: function () {
Y.MyNamespace.SortArray(12); //this should throw an error
}
});
});
在www/js/tests.js
中:
YUI.add('my-module', function (Y) {
Y.namespace('MyNamespace');
Y.MyNamespace.SortArray = function(array) {
if (array instanceof Array){
array.sort();
} else {
throw new TypeError("Expected an array");
}
}
});
YUI().use('test', 'my-module', function (Y) {
var testCase = new Y.Test.Case({
name: "TestCase Name",
//---------------------------------------------
// Tests
//---------------------------------------------
testSortArray: function () {
Y.MyNamespace.SortArray(12); //this should throw an error
}
});
});
看
要使加载程序了解my模块,请查看以下示例:
对于加载程序配置选项,请查看。我使用tests.html页面来引入所有必要的资源并执行测试 因此tests.html将:
- 包括YUI
- include functions.js
- 包含tests.js
- 创建一个Y.Test.Suite,其中包含我的所有测试
- 调用Y.Test.Runner.add(mySuite)
- 创建Y.Test.Console以呈现结果
- 调用Y.Test.Runner.run()李>
您也可以使用YUI加载程序来加载functions.js,但我没有尝试过(主要是因为我测试的代码都是YUI模块,所以加载程序可以很好地加载和使用它们)IMHO,糟糕的方式。。。我必须修改两个文件:模块和测试。我已经有了一个包含函数的文件。我已经决定使用因果报应,茉莉花和幻影。。。令人惊叹的!