Java programozas, javascript
  • MerlinW
    #309
    Valami ilyesmi most a dolog:

    karma-common.js:


    var defaultVariables = {
    "globalConfig": {"SERVER_URL": "http://testServerPath/"}
    };

    var defaultDependencies = {
    "$httpBackend": "$httpBackend",
    "$rootScope": "$rootScope",
    "$timeout": "$timeout",
    "$interval": "$interval",
    "$controller": "$controller",
    "$state": "$state"
    };

    var testHttpMock = function (method, mockUrl, httpResponseMock, dataPromise) {
    $httpBackend.expect(method, mockUrl).respond({data: httpResponseMock});
    var functionResult;
    dataPromise.then(function (response) {
    functionResult = response.data;
    });
    $httpBackend.flush();
    return functionResult;
    };

    var testInjectVariables = function (variables) {
    if (defaultVariables) {
    angular.forEach(defaultVariables, function (variableValue, variableName) {
    window[variableName] = variableValue;
    });
    }

    if (variables) {
    angular.forEach(variables, function (variableValue, variableName) {
    window[variableName] = variableValue;
    });
    }
    };

    var testInjectDependencies = function (dependencies) {
    return inject(function ($injector) {
    /*jslint evil: true */
    if (defaultDependencies) {
    angular.forEach(defaultDependencies, function (dependencyValue, dependencyName) {
    window[dependencyName] = eval($injector.get(dependencyValue));
    });
    }

    if (dependencies) {
    angular.forEach(dependencies, function (dependencyValue, dependencyName) {
    window[dependencyName] = eval($injector.get(dependencyValue));
    });
    }
    })
    };



    *.spec.js

    describe('testSomething', function () {

    //-----------------------------------------------------------------------------------
    //UNIT GLOBALS
    var variables = {};
    var dependencies = {};

    //-----------------------------------------------------------------------------------
    beforeEach(function () {
    //MODULE INJECTION
    module("ngHRM.admin");

    //SERVICE INJECTION
    dependencies.CustomConstants = "CustomConstants";
    dependencies.CustomizerService = "CustomizerService";

    //VARIABLE INJECTION
    variables.something = {"key": "value"}};
    variables.something_more = "foo";

    //PROVIDERS
    module(function ($provide) {
    //VALUES -> $provide.value('variable', variable);
    //SERVICES -> $provide.service('ServiceName', function () {}
    //FUNCTIONS -> this.variable = jasmine.createSpy('variable').and.callFake(function () { return result; });
    });
    });

    //-----------------------------------------------------------------------------------
    //LOAD THIS IN EVERY <it>
    function doInject() {
    //AUTOMATIC DEPENDENCY INJECTION
    testInjectVariables(variables);
    testInjectDependencies(dependencies);

    //CUSTOM INJECTIONS
    inject(function () {
    //SCOPE -> scope = $rootScope.$new();
    //SPY -> spyOn(,);
    //CTRL -> controller = $controller('controllerName', { $scope: scope, $state: state });
    });
    }

    //-----------------------------------------------------------------------------------
    //DEFAULT afterEach if we have $httpBackend injected
    afterEach(function () {
    if (defaultDependencies.$httpBackend) {
    $httpBackend.verifyNoOutstandingExpectation();
    $httpBackend.verifyNoOutstandingRequest();
    }
    });


    // ------------------------------------ TEST CASES ---------------------------------------

    it('should happen something', function () {
    doInject();
    });

    });