-1

这是应用程序的代码。所有其余的函数都是从init().

如何开始使用 qunit 测试代码,因为如果我直接调用 tests.js 文件中的函数,它会显示“ ReferenceError: init is not defined”。

var SOUND;
(function ($, undefined) {
// some code here 
// and has variables and functions defined which get called inside this and are all interdependent.


init = function () {
   } 

})(jQuery);
4

1 回答 1

0

您的问题是您在IFFEinit中声明您的函数,并且该函数范围之外的任何内容都无法访问它。您可以通过使用一个非常简单的“模块”模式来解决这个问题,该模式从您的 IFFE 返回 init 方法并将其分配给一个变量。

JS

// "namespace" for your application.
// Whatever your IFFE returns is assigned to the App variable
// this allows other scripts to use your application code
var App = (function ($, undefined) {

    // some code here 
    // and has variables and functions defined which get called inside this and are all interdependent.

    // example of a function inside your "application" js
    var printTitle = function () {
        var title = document.title;
        console.log(title);
    }

    var init = function () {
        printTitle();
    }

    // expose internal methods by returning them.
    // you should probably be exposing more than your init method
    // so you can unit test your code
    return {
        init: init
    }
})(jQuery);


// since we've returned the init function from within our iffe
// and that function is assigned to the App variable
// we are able to call App.init here
App.init(); // logs title

JSFiddle

我发现以下文章有助于进行 js 测试:

于 2013-10-21T14:12:37.753 回答