如何检测我是否处于测试模式 angularjs



我需要知道何时运行量角器,我该怎么做? 我需要这样的东西:

if(mode==test) {
do something
}

如何在我的 angularjs 应用程序中访问 protractor.conf.js 中的变量?

编辑:为了更清楚,我需要在我的常量上更改一个值,因此代码如下所示:

angular.module('app').constant('testConstant', { name: 'Johny'}) 

我在测试环境名称"Peter"中使用了更改,而不是"Johny"。我怎样才能以这种方式做到这一点?

正确的方法是将一个mock的角度模块附加到您的生产模块上,在那里您可以覆盖或传递您想要的任何内容。

该方法称为browser.addMockModule,它允许您将数据从节点(量角器运行的地方(传递到浏览器。

browser.addMockModule('modName', function(nameFromTest) {
angular.module('modName', []).constant('testConstant', { name: nameFromTest});
angular.module('yourProdAngularModule').requires.push('modName');
},'Johny');

上面的函数有点令人困惑,但是您传递的第三个参数可以传递给浏览器。

在实际代码库中添加此类检查通常是一种不好的做法。

好消息是,听起来您要做的只是在测试期间更新angularjs应用程序中的一些数据,这是非常可行的。

为此,您可以使用量角器的 browser.executeScript 方法 (https://www.protractortest.org/#/api?view=webdriver.WebDriver.prototype.executeScript(

我过去曾使用它来访问 AngularJS 服务,并让它调用一个更新一些模拟数据的函数......例如。。。

browser.executeScript('window.angular.element(document.body).injector().get('oneOfMyService').updateMockData(' + JSON.stringify({ data: 5, something: true }) + ');');

从这一点来看,这实际上取决于您尝试修改的数据以及页面如何使用它。

最新更新