在我的项目中,我正在使用protractor+jasmine+TypeScript进行端到端测试。我已经从TypeScript的继承荣耀中受益,将其应用于页面对象文件中(例如,我有一些BasePageObject类,其中包含通用方法/对象,用于派生其余的PageObjects)。我想在我的测试中引入相同的方法。以下是我现在拥有的示例代码:
测试套件A [ATest.ts]:
在Jasmine中是否有可能实现这个功能?
测试套件A [ATest.ts]:
import {
SomePage,
LoginPage
} from '../pages';
describe('test suite A', () => {
let loginPage: LoginPage = new LoginPage();
let somePage: SomePage = new SomePage();
beforeAll(() => {
loginPage.login();
somePage.navigateTo();
});
it('my test 1', () => {
//test body, assertions etc.
});
it('my test 2', () => {
//test body, assertions etc.
});
});
测试套件B [BTest.ts]:
import {
AnotherPage,
LoginPage
} from '../pages';
describe('test suite B', () => {
let loginPage: LoginPage = new LoginPage();
let anotherPage: AnotherPage = new AnotherPage();
beforeAll(() => {
loginPage.login();
anotherPage.navigateTo();
});
it('my test 1', () => {
//test body, assertions etc.
});
it('my test 2', () => {
//test body, assertions etc.
});
});
正如您所看到的,某些代码对于两个套件都是通用的。我想要实现的是在我的测试用例中继承,以更符合Java风格并避免代码重复(例如):
class BaseTestCase {
beforeAll() {
loginAction();
}
}
class TestA extends BaseTestCase {
beforeAll() {
specificStuff();
}
}
class TestB extends BaseTestCase {
beforeAll() {
specificStuff();
}
}
在Jasmine中是否有可能实现这个功能?
loginPage
和anotherPage
变量在其他地方使用吗?如果它们应该每个规范实例化一次,它们可以移动到一个模块并成为单例实例,不是吗? - Estus Flaskdescribe
是一个函数,不是一个类。因此它没有基于类的extends
。你可以使用原型继承,但我会创建自己的类,然后让这个类调用describe
函数,就像这个答案所示。 - Liam