如何在intern.js中测试视图库?

时间:2017-02-17 19:35:07

标签: javascript testing functional-testing intern leadfoot

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

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

有没有办法测试视图库而不将所有代码放在虚拟html文件中以使用leadfoot打开?

1 个答案:

答案 0 :(得分:1)

当然,您有两个选项,两个选项都涉及编写单元测试(不是功能测试)。一种是使用Intern的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。

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