我需要知道何时运行量角器,该怎么办? 我需要这样的东西:
if(mode==test) {
do something
}
如何在我的angularjs应用程序中从protractor.conf.js访问变量?
编辑:为了更加清楚,我需要在常量上更改一个值,因此代码如下:
angular.module('app').constant('testConstant', { name: 'Johny'})
我在测试环境名称“ Peter”而不是“ Johny”中使用了change。我该怎么做呢?
答案 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 }) + ');');
从这一点来看,这实际上取决于您要修改哪些数据以及页面如何使用它。