Javascript Yui测试-组织文件

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”文件中,我有一个函数:

我希望在我的网站上实施“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,糟糕的方式。。。我必须修改两个文件:模块和测试。我已经有了一个包含函数的文件。我已经决定使用因果报应,茉莉花和幻影。。。令人惊叹的!