vendredi 5 juin 2015

Unit test for directive where there is two-way data-binding

This is my directive code:

(function() {
    'use strict';
    function dropdownSelectDrct() {
        return {
            restrict: 'E',
            replace: true,
            template:    "<div><label>" + "<input type="text" name="input" ng-model="wrapper.value2">" + 
"</label><span>{{wrapper.value2}}</span></div>"
            controller: 'dropdownSelectCtrl',
            scope: {
            }
        };
    }
    angular.module( 'app' ).directive( 'dropdownSelect', dropdownSelectDrct );
})();

And the controller is as following:

(function() {
    'use strict';
    function dropdownSelectCtrl( $scope ){
        $scope.wrapper = {
            value2: 'fun'
        };
    }
    angular.module( 'app' ).controller( 'dropdownSelectCtrl', dropdownSelectCtrl );
})();

The Unit Test code is as following:

describe( 'simple-test', function() {
    'use strict';
    describe( 'Directive: dropdown-select', function() {
        var elem;
        var $scope;
        var $rootScope, $compile;
        beforeEach( module(
           'app'
        ) );

        beforeEach( module( 'app', function( $controllerProvider ) {
            $controllerProvider.register( 'dropdownSelectCtrl', function( $scope ) {
                $scope.value = 'foo';
                $scope.wrapper = {
                    value2: 'fun2'
                };
            });
        } ) );

        beforeEach( inject( function( _$rootScope_, _$compile_ ) {
            $rootScope = _$rootScope_;
            $compile = _$compile_;
            $scope = $rootScope.$new();
            elem = angular.element( '<dropdown-select></dropdown-select>' );
            elem = $compile( elem )( $scope );
            $scope.$digest();
        }));

        it( 'another test', function() {
            elem.find( 'input' ).val( 'abcdef' );
            $scope.$digest();
            expect( elem.isolateScope().wrapper.value2 ).toEqual( 'abcdef' );
        });

    });
});

It seems we fails to update the variable binding to input textbox.

Would you please give me some instruction about how to fix it?

Aucun commentaire:

Enregistrer un commentaire