模块 'httpMock' 不可用
这是对量角器测试使用量角器的HTTP错误消息模拟:模块 'httpMock' 不可用
JavascriptError: javascript error: [$injector:nomod] Module 'httpMock' is not available! You eit her misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
conf.js:
// An example configuration file.
exports.config = {
directConnect: true,
// Selenium server
SeleniumAddress: 'http://localhost:4444/wd/hub',
// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'chrome'
},
//baseUrl: 'http://develop.garbo.livebranches.com/sv-SE/',
//Framework to use. Jasmine 2 is recommended.
framework: 'jasmine2',
//frameworks: ['mocha', 'jasmine'],
// Spec patterns are relative to the current working directly when
// protractor is called.
//specs: ['testmain.js','testlogin.js'],
//specs: ['testmain.js','testteaPartyList.js','testpositionSearchIndex.js','testpositionList.js'],
specs: ['testlogin.js'],
//Options to be passed to Jasmine.
jasmineNodeOpts: {
defaultTimeoutInterval: 250000
},
mocks: {
dir: '../node_modules/protractor-http-mock',
//dir: 'mocks',
default: []
},
//=====login begin =====
onPrepare: function() {
require("protractor-http-mock").config = {
rootDirectory: '../node_modules/protractor-http-mock/lib',
//rootDirectory: __dirname,
protractorConfig: "conf.js", // name of the config here
};
}
//=====login end========
};
testlogin.js
describe('angularjs homepage', function() {
//browser.ignoreSynchronization = true;
it('should login', function() {
var mock = require('protractor-http-mock');
var todoList;
beforeEach(function() {
var url ='http://dev.etest.com:285/Actor/tbUsers/LoginAndGet';
var req = {Mobile:'14500000006',Password:'123456'};
var rep = {UserId:164,AccountId:328,Token:'328:dc91d536ab424aa0b8d7f1ecaf64c55b',Id:328};
mock([{
request: {
path: url,
method: 'POST',
data:req,
},
response: {
data: rep,
}
}]);
});
afterEach(function() {
mock.teardown();
});
browser.get('http://localhost:2024/daNiuJob/www/ionicWeb/index.html#/login');
console.log('mock='+mock);
element(by.model('data.userName')).sendKeys('14500000006');
element(by.model('data.password')).sendKeys('123456');
var btnlogin = element(by.id('Regist')).element(by.tagName('a'));
expect(browser.getTitle()).toEqual('userlogin');
browser.getTitle().then(function(text){
console.log('title='+text);
});
//cause mock error
expect(mock.requestsMade()).toEqual([
{ url : 'http://dev.etest.com:285/Actor/tbUsers/LoginAndGet', method : 'GET' },
]);
btnlogin.click();
browser.sleep(8000);
});
});
为什么找不到httpMock
,谢谢!
注:
C:\Users\HQ-XXX\AppData\Roaming\npm\node_modules\protractor\node_modules\protractor-http-mock
这是“量角器-HTTP-模拟”
你应该给HTTP的模拟模块文件夹的路径,而不是lib文件夹里面的路径。如果你需要提供相对路径然后如下更改
rootDirectory: 'C:\Users\HQ-XXX\AppData\Roaming\npm\node_modules\protractor\node_modules\protractor-http-mock ',
- -
rootDirectory: '..\node_modules\protractor-http-mock ',
希望这有助于改变protractor-http-mock
内onPrepare()
功能,以您的rootDirectory路径。
谢谢,Girish Sortur – jack
我们遇到了同样的问题,它与每个规格开始时的页面重新加载有关。
这是由html5mode和browser.get的错误配置引起的,因此它在foo.bar/到foo.bar/#/的开头进行了重定向,它卸载了所有注入的量角器代码。
错误是因为量角器无法在指定的路径中找到您的httpMock模块。如果您的node_modules目录与您的项目目录相关,并且在其中,则使用'rootDirectory:'。/ node_modules/protractor-http-mock/lib','。或者让我知道文件夹结构如何帮助你。 –
C:\用户\ HQ-XXX \应用程序数据\漫游\ NPM \ node_modules \量角器\ node_modules \量角器-HTTP-模拟 这是 '量角器-HTTP-模拟' – jack
路径和conf.js路径 – jack