从命令行测试 JavaScript 代码 [重复]

Posted

技术标签:

【中文标题】从命令行测试 JavaScript 代码 [重复]【英文标题】:Testing JavaScript code from the command line [duplicate] 【发布时间】:2018-06-13 06:15:51 【问题描述】:

作为一个 javascript 新手,我很难理解如何“加载”我的代码,以便我可以在应用程序之外使用单元测试对其进行测试。

php 中,我有一个自动加载器(composer),所以我可以引用我想要与之交互的类并自动加载它,或者我可以使用require_once 来包含一个物理文件和其中的类或函数文件可供我使用。

所以,其中一个类(存储在文件 src/lib/App/Calculator.js 中)...

App.Calculator = (function () 

    var Calculator = function (onUpdateCallback) 
        this.amountChange = 0.00;
        this.amountDue = 0.00;
        this.amountTendered = 0.00;
        this.onUpdateCallback = onUpdateCallback;
    ;

    Calculator.prototype = 
        clear: function () 
            this.amountTendered = 0.00;
            this.calculate();
        ,

        calculate: function () 
            if (this.amountDue > 0) 
                this.amountChange = Math.max(0, this.getAmountTendered() - this.amountDue);
             else 
                this.amountChange = -(this.getAmountTendered() + this.amountDue);
            

            if (typeof this.onUpdateCallback === 'function') 
                this.onUpdateCallback(this);
            
        ,

        getAmountTendered: function () 
            return Number(this.amountTendered);
        ,

        getChange: function () 
            return this.amountChange;
        ,

        setAmountTendered: function (amountTendered) 
            this.amountTendered = parseFloat(amountTendered);
            this.calculate();
        ,

        setAmountDue: function (amountDue) 
            this.amountDue = parseFloat(amountDue);
            if (this.amountDue < 0) 
                this.negative = true;
            
            this.calculate();
        
    ;

    return Calculator;

)();

我希望能够创建 App.Calculator 的新实例并在应用程序之外对其进行测试。从命令行。

从 PHPUnit 到 JS,我知道我缺少很多理解,所以任何指针(自以为是或其他)都将不胜感激。

【问题讨论】:

如果你只是在浏览器中打开你的网站,你应该可以访问App.Calculator,然后做你想做的事。 在浏览器中打开你的应用程序 -> f12 -> 来源 -> 找到 js 文件并在你的类中放置任意数量的断点和重新加载页面或 f12 -> var calc = App.calculator (); calc.getChange(); ...无论您想在课堂上测试什么; 如果您正在寻找 JUnit 测试框架,我可以推荐 Facebook 的 Jest。我基本上随附电池,并且非常容易设置。 @RoumelisGeorge 这个问题是关于运行单元测试的。这与调试代码或在浏览器中手动测试无关。 我在我的 nodejs 项目中使用 mocha / chai。关于在这些测试中导入代码,我建议使用基于模块的方法,请参阅:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 如果代码打算在浏览器中运行,您可能必须使用像 babel 或 bundler 这样的转译器作为 webpack。 【参考方案1】:

最好的办法是使用 F12 调试命令行在浏览器中测试您的代码。

如果您想在实际命令行中执行此操作,另一种选择是使用 Node.JS。这基本上是一个 javascript 的后端应用程序,您只需将代码粘贴到 .js 文件中,然后使用 CMD 命令:"node [yourfile.js]",它将运行该文件。使用console.log 可以登录到命令行。

【讨论】:

手动复制/粘贴代码到浏览器的命令行中以运行单元测试是一个糟糕的主意。工作量太大了。 “然后使用 CMD 命令”——这对解决问题没有帮助。它不会对代码进行任何测试 我正在尝试自动化测试运行。几百个班。这只是一个例子。我们在管道中使用 PHPUnit,它正在测试超过 20,000 个测试。我们现在想要对 JS 代码进行一些测试。我们都不是专家,所以我们知道我们将不得不学习一些东西。不应涉及浏览器。 问题是关于测试套件的。不是通过日志驱动的方法手动调试代码。单元测试!= 在浏览器中测试 @RichardAQuadling 啊,使用节点你可以要求代码是的。您可以使用require("./filename.js"); 执行此操作,但是在您需要的文件中,您将以下内容放在底部:module.exports = 后跟要导出的内容。这可以是任何东西。如果您随后需要该文件,它将包含您使用module.exports 导出的任何内容。注意:如果您使用不在 module.exports 中的函数,它将不起作用,除非该函数由 module.exports 中的代码调用。示例:gist.github.com/PauldeKoning/2077c08e80c38f79203825eefda7bd11

以上是关于从命令行测试 JavaScript 代码 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

actionscript - 通过命令行测试actionscript

IntelliJ缩短黄瓜测试的命令行[重复]

Junit单元测试

利用Linux命令行进行文本按行去重并按重复次数排序

如何将命令行参数从pytest传递给代码

使用Linux命令行测试网速