TypeScript-无法从帮助程序类导入函数

时间:2018-11-20 21:27:43

标签: typescript protractor e2e-testing

我正在使用Protractor框架创建TypeScript并计划在类中使用一组辅助函数(例如isDisplayed(),isPresent(),isClickable()等),并尝试在spec文件中重用它们。 / p>

最终结果将如下所示:

selectDropDown(element, option);
enterText(element, text);

但是,由于无法从帮助文件中导出功能,因此在创建帮助文件时遇到了问题。自动完成或自动建议不起作用,因为无法访问该对象。 :(

helper.ts

import { } from 'jasmine';
import { by, element, browser } from 'protractor';
import { By } from 'selenium-webdriver';

export class helper {
    async sayHello(name: String) {
        console.log('Hello ' + name);
    }
}

sample-page.ts

import { by, element, browser, WebElement } from 'protractor';
import { async } from 'q';
import { helper } from '../../helper'; //Importing the helper here

export class loginPage{

    help123: helper = new helper();
    help123. //Here the auto completion just doesn't happen.

我要去哪里错了?

1 个答案:

答案 0 :(得分:0)

您将必须创建一个新变量才能使其工作,例如:

import { helper } from '../../helper';
export class loginPage{
  let help = new helper();
  help.sayHello('name');
}

一个更简单的解决方案可能是使助手函数中的方法静态化。如果您有:

export class helper{
  static async sayHello(name:String){
    console.log('Hello '+name);
  }
}

然后您可以像下面这样调用此方法:

import { helper } from '../../helper';
export class loginPage{
  helper.sayHello('name');
}

或者,在您的帮助器类中,您可以使用诸如以下的吸气剂:

export class helper{
static get x() {return new this();} //could be named anything, I chose 'x'  
async sayHello(name:String){
    console.log('Hello '+name);
  }
}

可以允许您调用

之类的方法
import { helper } from '../../helper';
export class loginPage{
  helper.x.sayHello('name');
}