我目前正在学习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有关事件的事情一样。
任何帮助将不胜感激。