我正在建立一个以骨干为基础的图书馆。我的库有一个View类,它是Backbone.View的扩展。它有一个HTML元素作为它的属性。我在视图上有一堆新功能,我想用实习生测试它们。
问题在于我找不到从实习生本身引用DOM的方法。我能看到这个工作的唯一方法是打开一个单独的HTML页面的远程URL,并使用leadfoot查询这个DOM。对于访问特定页面来测试站点的网站来说,这种方法看起来很棒,但我正在尝试构建一个库,所以似乎没有必要单独的页面来测试库的核心功能。
有没有办法测试视图库而不将所有代码放在虚拟html文件中以使用leadfoot打开?
答案 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-runner
或intern run -w
)下运行Intern。
要在浏览器客户端中运行测试,请启动基于项目目录的静态服务器(如果使用intern-cli,则为intern serve
),打开浏览器并浏览到http://localhost:<port>/node_modules/intern/client.html?config=tests/intern
(假设您的测试config位于tests/intern.js
)。