TS是否接受在Protractor配置中定义的全局变量



在Protractor配置中的onPrepare方法中添加全局变量时,Typescript在尝试在测试文件中使用时提供错误"找不到名称'____'"。

以下是我如何在我的Protractor配置中定义全局变量。

protractorConfig.js
onPrepare: function () {
global.logger = log4js.getLogger( 'log' );
},

以下是我如何利用全局变量。

homepageTests.js
it( '1@tests homepage', function () {
logger.info( 'password for application: ' + pswd );
} );

参考下面的SO文章,在onPrepare方法中设置全局变量是Protractor库的工作方式,因此它应该是有效的。Protractor集全局变量

此错误是一个TypeScript编译时错误,因为TS不知道globals以及添加了某些内容。为了解决这个问题,您需要以某种方式添加全局变量的声明,或者只使用断言。

it('1@tests homepage', function () {
(global as any).logger.info('password for application: ' + pswd);
});

当然,any可以用更有用的东西来代替。

另一种选择是在用于e2e测试的tsconfig.json附近创建globals.d.ts,并将此行放在那里:

declare const logger: any; // Again, 'any' may be replaced with real type

通过这种方式,您可以随心所欲地访问logger

it('1@tests homepage', function () {
logger.info('password for application: ' + pswd);
});

你可以在这个SO问题中找到一些其他合适的选项

最新更新