茉莉花未检测到AngularJS中的值变化

时间:2018-07-30 11:55:12

标签: javascript angularjs jasmine

我目前正在学习Jasmine,并且正在编写一个简单的AngularJS应用程序,其中有一个输入,其输入值取决于复选框的值。

以下是我的html文件:

<html>
<head>
    <title>Home</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.2/angular.min.js"></script>
    <script src="action.js"></script>
</head>
<body ng-app="app" ng-controller="ctrl">
    <input type="text" id="text" ng-model="text"/>{{text}}<input type="checkbox" id="checkbox" ng-model="checkbox" ng-change="Change()">
</body>

这是action.js文件:

var app = angular.module("app",[]);
app.controller('ctrl', function($scope){
    $scope.checkbox = false;
    var bool = $scope.checkbox;
    if(bool){
        $scope.text = 'Hello';
    }
    else{
        $scope.text = 'H';
    }
    $scope.Change = function(){
        var bool = $scope.checkbox;
        if(bool){
            $scope.text = 'Hello';
        }
        else{
            $scope.text = 'H';
        }
    };
});

还有我的Jasmine JS文件:

describe('my app test', function(){
    beforeEach(angular.mock.module('app'));
    var $controller;
    beforeEach(angular.mock.inject(function(_$controller_){
        $controller = _$controller_;
    }));

    describe('text testing', function(){
        var $scope, controller;
        beforeEach(function() {
            $scope = {};
            controller = $controller('ctrl', { $scope: $scope });
        });

        it('it has to be equal Hello', function() {
            expect($scope.text).toEqual('Hello');
        });
    });
});

我已经在Chrome中的2个不同选项卡中运行了SpecRunner页和html页,并且当我更改复选框的值(选中或取消选中)时,文本输入的值也更改了,但是测试始终失败,因为测试.js假定复选框的初始值为false,即使我选中该复选框并重新加载两个选项卡也是如此。就像我在复选框上没有告诉Jasmine有关事件的事情一样。

任何帮助将不胜感激。

0 个答案:

没有答案