【发布时间】:2015-11-16 22:50:36
【问题描述】:
我是 TypeScript 新手,但在 C# 方面经验丰富。我正在尝试做一些非常简单的事情,但我错过了一些基本的东西。我正在使用量角器在 Angular 前端编写用户测试。我正在使用页面对象模式,并且我想将页面对象保存在与我的用户测试不同的文件中,以便我可以在多个用户测试文件之间共享页面对象。
当我尝试新建类时,我不断收到错误消息说页面对象类不是函数。我究竟做错了什么?这是我因错误而失败的代码:
TypeError:UserTests.DashboardPage 不是函数。
页面对象文件:名为dashboard.pageobject.ts
module UserTests {
export class DashboardPage {
setupPage = function () {
console.log("setupPage function");
};
}
}
量角器测试文件:名称dashboard.test1.spec.ts
/// <reference path="../../../typings/jasmine.d.ts" />
/// <reference path="../../../typings/angular-protractor.d.ts" />
/// <reference path="../../../typings/selenium-webdriver.d.ts" />
/// <reference path="dashboard.pageobject.ts" />
module UserTests {
describe('When testing the Dashboard page', function() {
it('Should pass', function () {
var page = new UserTests.DashboardPage();
});
});
}
出现错误就行了:var page = new UserTests.DashboardPage();
更新(2015 年 11 月 17 日):
在阅读了 basarat 关于internal 模块的回复后,我终于把所有的部分放在一起。我从页面对象文件中删除了 module 关键字,公开了 setupPage 方法,并在 spec 文件中添加了 import 语句。阅读外部模块让我意识到 Node 已经将每个文件视为一个模块。 This 帖子(也由 basarat 发布)将这一点带回家让我公开该功能。另外,我安装了 RequireJS。这是我的最终代码。
页面对象文件:
export class DashboardPage {
public setupPage = function () {
console.log("setupPage function");
};
}
量角器测试文件:
/// <reference path="../../../typings/jasmine.d.ts" />
/// <reference path="../../../typings/angular-protractor.d.ts" />
/// <reference path="../../../typings/selenium-webdriver.d.ts" />
import pageObj = require("./dashboard.pageobject");
describe('When testing the Dashboard page', function() {
it('Should pass', function () {
var page = new pageObj.DashboardPage();
page.setupPage();
console.log('I made it!');
});
});
感谢回复的人!!
【问题讨论】:
-
我不知道代码 sn-p 是如何工作的,但是您是否在加载之前将 TypeScript 编译为 Javascript?我在您的代码中看到了
module和export。
标签: javascript requirejs typescript protractor