使用 qunit 测试我的代码时出错

Error on testing my code with qunit

本文关键字:出错 代码 我的 qunit 测试 使用      更新时间:2023-09-26

这是应用程序的代码。所有其余函数都是从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);

您的问题是您在 IFFE 中声明了您的init函数,并且该函数范围之外的任何内容都无法访问它。您可以使用非常简单的"模块"模式来解决此问题,该模式从 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 测试很有帮助:

  • 编写可测试的前端Javascript第1部分 - 反模式及其修复
  • 编写可测试的 Javascript
  • 基本 JS 设计模式