使用 Karma Jasmine 进行单元测试 Angular 功能

Unit Testing Angular Function using Karma Jasmine

我在控制器中有这样的功能

$scope.closeMenu = function () {
                    $('#menu').hide();
                };

如果函数 returns 一个我可以测试的值 期望($scope.value).toEqual(); 我们如何使用 jasmine 测试上述功能。请帮忙谢谢

If a functions returns a value I am able to test using expect($scope.value).toEqual(); How do we test the above function using jasmine

你应该重写你的函数,让它只设置模型的一个变量。然后可以使用您在 Jasmine 中已知的方式对其进行测试。 angular 的要点之一是您不会从控制器操纵 DOM。如果您遵循这些准则,控制器将更容易测试。

此外,在您的情况下重写非常简单:

$scope.closeMenu = function () {
    $scope.isOpen = false;
};

模板:

... id="menu" ng-show="isOpen" ...

如果您仍然需要测试 DOM 元素的某些特征,例如它的可见性,jasmine-jquery 可能对您有用。示例:

expect($('#menu')).toBeHidden()