如何检测到我处于测试模式angularjs

时间:2018-06-29 14:35:48

标签: angularjs testing protractor

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

if(mode==test) {
    do something
}

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

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

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

我在测试环境名称“ Peter”而不是“ Johny”中使用了change。我该怎么做呢?

2 个答案:

答案 0 :(得分:1)

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

称为browser.addMockModule的方法,它使您可以将数据从量角器所在的节点传递到浏览器。

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

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

答案 1 :(得分:0)

在您的实际代码库中添加类似的检查通常是一个坏习惯。

好消息是,听起来您想要做的就是在测试过程中更新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 }) + ');');

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