模块& # 39;httpMock& # 39;不可用

Module 'httpMock' is not available

本文关键字:httpMock 模块      更新时间:2023-09-26

这是关于量角器测试使用量角器的错误消息:

JavascriptError: javascript error: [$injector:nomod] Module 'httpMock'不可用!您可能拼错了模块名,或者忘记了加载它。如果注册一个模块,请确保指定依赖项作为第二个参数。

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

这是'protractor-http-mock'的路径

您应该给出http-mock模块文件夹的路径,而不是其中的lib文件夹。将onPrepare()函数中protractor-http-mock的rootDirectory路径更改为-

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

如果你需要提供一个相对路径,那么修改如下-

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

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

这是由于html5模式和浏览器配置错误造成的。它从foo开始做了一个重定向。Bar/to foo。Bar/#/卸载所有注入的量角器代码