模块 '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-模拟”

+0

错误是因为量角器无法在指定的路径中找到您的httpMock模块。如果您的node_modules目录与您的项目目录相关,并且在其中,则使用'rootDirectory:'。/ node_modules/protractor-http-mock/lib','。或者让我知道文件夹结构如何帮助你。 –

+0

C:\用户\ HQ-XXX \应用程序数据\漫游\ NPM \ node_modules \量角器\ node_modules \量角器-HTTP-模拟 这是 '量角器-HTTP-模拟' – jack

+0

路径和conf.js路径 – jack

你应该给HTTP的模拟模块文件夹的路径,而不是lib文件夹里面的路径。如果你需要提供相对路径然后如下更改

rootDirectory: 'C:\Users\HQ-XXX\AppData\Roaming\npm\node_modules\protractor\node_modules\protrac‌​tor-http-mock ', 

- -

rootDirectory: '..\node_modules\protrac‌​tor-http-mock ', 

希望这有助于改变protractor-http-mockonPrepare()功能,以您的rootDirectory路径。

+0

谢谢,Girish Sortur – jack

我们遇到了同样的问题,它与每个规格开始时的页面重新加载有关。

这是由html5mode和browser.get的错误配置引起的,因此它在foo.bar/到foo.bar/#/的开头进行了重定向,它卸载了所有注入的量角器代码。