mardi 24 novembre 2015

Use Mock HTTP with Protractor and Jasmine

How can I use Mock HTTP with Jasmine and Protractor ?

In my test.spec.js, I declared a mock, but this mock doesn't work. I have not error. My api always responds and not the mock.

In my app.js I don't have "ngMock".

I added this in my index.html :

node_modules/angular-mocks/angular-mocks.js

test.spec.js

var loginPO = new(require('./models/login.model.js'))();

describe("hello", function() {

    it("I click the button-search button", function() {

        loginPO.wait(10);

        browser.addMockModule('modName', function() {
            //angular.module('modName', ['myApp', 'ngMockE2E'])
            angular.module('modName', ['ngMockE2E'])
                .run(function ($httpBackend) {

             $httpBackend.whenPOST('http://ift.tt/1Tc9GBS').respond('response');

                console.log('ok');
            });
        });

        //browser.getRegisteredMockModules();

        loginPO.clickButtonSearchButton();
        loginPO.wait(10);
    });

    it("I am on the home page", function() {
        loginPO.visit('#/');
    });

    ...

});

models/login.model.js

'use strict';

var _ = require('lodash');

var LoginPageObject = function() {

    var signInButton = element(by.id('signIn'));

    _.mixin(this, require('./common/base.js').Base);

    this.path = '#/';

    this.clickButtonSearchButton = function() {
        return browser.driver.findElement(by.id('button-search')).click();
    };

    ...

};

module.exports = LoginPageObject;

common/base.js

function visit(path, params) {
    // return browser.get(this.path + (params || ''));
    return browser.get(this.path + (params || ''));
}

function wait(params) {
    params = params * 1000;
    return browser.sleep(params);
}
...

exports.Base = {
    visit: visit,
    wait: wait,
    ...
};

protractor.config.js

exports.config = {
  directConnect: true,

  seleniumServerJar: 'node_modules/selenium-server/lib/runner/selenium-server-standalone-2.48.2.jar',

  specs: [
    'jasmine/*.spec.js'
  ],

  getPageTimeout: 30000,

  capabilities: {
    'browserName': 'chrome',
    version: '',
    platform: 'ANY'
  },

  framework: 'jasmine'

};

Aucun commentaire:

Enregistrer un commentaire