โมดูล 'httpMock' ไม่พร้อมใช้งาน

นี่คือข้อความแสดงข้อผิดพลาดในการทดสอบไม้โปรแทรกเตอร์ใช้ไม้โปรแทรกเตอร์ http เยาะเย้ย:

JavascriptError: ข้อผิดพลาดของจาวาสคริปต์: [$injector:nomod] โมดูล '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

นี่คือเส้นทางของ 'ไม้โปรแทรกเตอร์-http-จำลอง'


person jack    schedule 07.09.2015    source แหล่งที่มา
comment
ข้อผิดพลาดเกิดขึ้นเนื่องจากไม้โปรแทรกเตอร์ไม่สามารถค้นหาโมดูล httpMock ของคุณในเส้นทางที่ระบุ หากไดเร็กทอรี node_modules ของคุณสัมพันธ์กับไดเร็กทอรีโปรเจ็กต์ของคุณและอยู่ภายในไดเร็กทอรีนั้น ให้ใช้ rootDirectory: './node_modules/protractor-http-mock/lib', หรือแจ้งให้เราทราบว่าโครงสร้างโฟลเดอร์มีลักษณะอย่างไรเพื่อช่วยคุณในเรื่องนี้   -  person Girish Sortur    schedule 07.09.2015
comment
C:\Users\HQ-XXX\AppData\Roaming\npm\node_modules\protractor\node_modules\protractor-http-mock นี่คือเส้นทางของ 'protractor-http-mock'   -  person jack    schedule 07.09.2015
comment
C:\Users\HQ-XXX\AppData\Roaming\npm\node_modules\ไม้โปรแทรกเตอร์\ตัวอย่าง\conf.js   -  person jack    schedule 07.09.2015


คำตอบ (2)


คุณควรให้เส้นทางของโฟลเดอร์โมดูล http-mock และไม่ใช่โฟลเดอร์ lib ข้างใน เปลี่ยนเส้นทาง rootDirectory ของคุณเป็น protractor-http-mock ภายในฟังก์ชัน onPrepare() เป็น -

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

หากคุณจำเป็นต้องระบุเส้นทางสัมพัทธ์ ให้เปลี่ยนดังนี้ -

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

หวังว่านี่จะช่วยได้

person Girish Sortur    schedule 07.09.2015

เราประสบปัญหาเดียวกันและมันเกี่ยวข้องกับการโหลดหน้าซ้ำเมื่อเริ่มต้นข้อมูลจำเพาะทุกรายการ

สิ่งนี้มีสาเหตุมาจากการกำหนดค่าที่ผิดพลาดของ html5mode และ browser.get ดังนั้นจึงทำการเปลี่ยนเส้นทางที่จุดเริ่มต้นจาก foo.bar/ ไปยัง foo.bar/#/ ซึ่งจะยกเลิกการโหลดโค้ดไม้โปรแทรกเตอร์ที่ถูกแทรกไว้ทั้งหมด

person outsmartin    schedule 22.09.2016