gpt4 book ai didi

angularjs - 为什么在将 Jasmine 与 Angular 一起使用时会出现 'inject' 未定义错误?

转载 作者:行者123 更新时间:2023-12-02 19:21:38 25 4
gpt4 key购买 nike

我是 Jasmine/AngularJS 单元测试新手。我创建了一个简单的 Angular 应用程序来添加两个数字,以便我可以学习如何为 Angular 应用程序编写单元测试。 Angular Doc on unit test is incomplete .根据博客和堆栈溢出答案,我构建了第一个测试,但遇到了“注入(inject)器”未定义错误。我正在使用 Jasmine 框架进行单元测试。
HTML

<body>
<div ng-controller="additionCtrl">
First Number: <input ng-model="NumberOne"/><br/>
Second Number: <input ng-model="NumberTwo"/>
<button ng-click="add(NumberOne, NumberTwo)">Add</button><br/>
Result: {{Result}}
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js"></script>
<script src="Scripts/additionCtrl.js"></script>
</body>

Controller :

function additionCtrl($scope) {
$scope.NumberOne = 0;
$scope.NumberTwo = 0;
$scope.Result = 0;
$scope.add = function (a, b) {
};
}

Jasmine 规范文件。

describe("Addition", function () {
var $scope, ctrl;

beforeEach(inject(function ($rootScope, $controller) {
this.scope = $rootScope.$new();
ctrl = $controller('additionCtrl', {
$scope: this.scope
});
}));

it("should add two integer numbers.", inject(function ($controller) {
expect(ctrl.add(2, 3)).toEqual(5);
}));
});

Specrunner.html

    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js"></script>
<script type="text/javascript" src="lib/angular-mocks.js"></script>
<script type="text/javascript" src="lib/jasmine-1.3.1/jasmine.js"></script>
<script type="text/javascript" src="lib/jasmine-1.3.1/jasmine-html.js"></script>

<!-- include source files here... -->
<script type="text/javascript" src="../App/Scripts/additionCtrl.js"></script>

<!-- include spec files here... -->
<script type="text/javascript" src="spec/addition.spec.js"></script>

这是一个失败的测试,一旦测试失败并达到预期结果,我就可以修改代码以使其通过,但我面临着某种 Angular 模拟没有获得注入(inject)器的问题。
我看到一个例子,我可以新建一个 Controller 而不是使用注入(inject)器,但我想尝试学习使用注入(inject)器,以便我设置更复杂的测试。
我可能会在这里遗漏一些简单的东西。请指导我查看我可能错过的任何文章。
谢谢

最佳答案

为了将来的引用,这里有一个带有完整单元测试设置的 Plunker(为了回答我即将发布的问题)

http://plnkr.co/edit/KZGKM6

此设置可用于共享测试场景,这很有用。

关于angularjs - 为什么在将 Jasmine 与 Angular 一起使用时会出现 'inject' 未定义错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15957191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com