4

我正在尝试对可以从命令行运行的 JS 代码编写一些简单的测试,以测试与 HTML、文档或用户界面无关的代码。为此,我需要在另一个文件中包含一个文件,以将正在测试的代码拉入测试脚本。我发现需要 HTML 或 DOM 来完成这项工作;例如,像 document.write() 之类的东西。有没有一种简单的方法可以做到这一点?我正在成像 include("code2test.js"); 我将不胜感激任何帮助解决这个问题。JQuery 可以提供帮助还是必须在 HTML/浏览器上下文中使用?

在此先感谢.j

4

4 回答 4

1

听起来你需要的是Require.js。它旨在允许使用 javascript 而不是脚本标签在网页中包含 javascript。例如,而不是:

<script scr="foo.js"></script>
<script>
    use_foo_here();
</script>

使用 Require.js 你可以写:

require(["foo.js"],function(foo){
    use_foo_here();
})

Require.js 最酷的地方在于它甚至可以在Node.js上使用。因此,对于命令行调用,您可以使用 Node 来运行您的脚本,并且这些require()语句将像在网页上一样工作。

于 2013-03-19T02:21:53.560 回答
1

听起来您只需要两个脚本标签:

<script type="text/javascript" src="code2test.js"></script>
<script type="text/javascript" src="testscript.js"></script>

如果这不起作用,请尝试颠倒顺序。

于 2013-03-19T02:15:13.547 回答
0

如果您只想在不使用浏览器的情况下访问 javascript 引擎(例如 Webkit),您可以使用nodeJSPhantomJS之类的东西

于 2013-03-19T02:19:47.273 回答
0

我们使用Chutzpah作为我们的测试运行器,并且对它非常满意。我们使用Jasmine编写测试。Jasmine 不需要 DOM。

在测试文件的开头,添加了对被测 JavaScript 文件的引用,如下所示:

/// <reference path="dependantModule.js" />
/// <reference path="code2test.js" />

然后测试代码如下:

describe("code2test test suite", function () {

    it("should do something"", function () {
        var result;

        // Assuming code2test.js exposes a global called 'code2test'
        result = code2test.doSomething();
        expect(result).toEqual("the expected result");
    });
});

Chutzpah 使用 PhantomJS 无头浏览器。因此,如果需要,您可以编写与 DOM 交互的测试。

我们从命令行通过 Chutzpah 运行测试以进行持续集成,但也使用 Chutzpah Visual Studio Extension 在 Visual Studio 2010 中运行它们。我相信在 VS2012 中集成 Chutzpah 更容易,但我自己没有尝试过。

测试也可以在“真正的”浏览器中运行,这非常适合调试。我选择的用于调试测试代码的浏览器是 Chrome——开发者工具很棒。

于 2013-03-19T08:42:18.303 回答