0

我正在构建一个以主干为基础的库。我的库有一个 View 类,它是 Backbone.View 的扩展。它有一个 HTML 元素作为它的属性。我在视图上有一堆新功能,我想和实习生一起测试它们。

问题是我找不到从实习生本身引用 DOM 的方法。我能看到的唯一方法是打开一个单独的 HTML 页面的远程 URL,并使用 Leadfoot 查询这个 DOM。这种方法对于您访问特定页面以测试您的网站的网站来说似乎很棒,但我正在尝试构建一个库,因此似乎没有必要为了测试库的核心功能而设置单独的页面。

有没有一种方法可以测试视图库,而无需将所有代码放入虚拟 html 文件中以使用 Leadfoot 打开?

4

1 回答 1

1

当然,您有几个选项,这两个选项都涉及编写单元测试(不是功能测试)。一种是直接使用 Intern's 在浏览器中运行单元测试client.html,另一种是使用 WebDriver ( intern-runner) 在浏览器中运行它们。

您的单元测试将加载您尝试测试的任何类、实例化它们的实例、进行断言等。由于您的单元测试将在浏览器中运行,它们将可以访问 DOM。

请注意,您的测试不会加载测试页面,它们会加载代码模块。所以一个测试可能看起来像:

define([
    'intern!object', 'intern/chai!assert', 'app/View'
], function (registerSuite, assert, View) {
    var view;

    registerSuite({
        name: 'app/View',

        afterEach: function () {
            // cleanup the view after each test
            view.remove();
            view = null;
        },

        someTest: function () {
            var view = new View();
            // run tests on the view
        }
});

要使用 WebDriver 运行测试,请将其列在suites而不是functionalSuites在实习生配置中,然后以 webdriver 模式(intern-runnerintern run -w)运行实习生。

要在浏览器客户端中运行测试,请在项目目录中启动一个静态服务器(intern serve如果使用 intern-cli),打开浏览器并浏览到http://localhost:<port>/node_modules/intern/client.html?config=tests/intern(假设您的测试配置位于tests/intern.js)。

于 2017-02-18T02:49:18.740 回答