Javascript 角度+;茉莉花试验
我对AngularJS和BDD与Jasmine的测试都是新手。我这个周末的目标是在这两方面都变得更有能力 我目前正在学习angularJS网站上提供的教程,我正在本地处理这些文件。在本文中,我们将简要介绍如何使用Jasmine创建角度测试 然而,我完全按照教程中的说明做了,Jasmine失败了。该测试只是为了确保在HTML中呈现3部手机。(有) 以下是测试:Javascript 角度+;茉莉花试验,javascript,angularjs,jasmine,Javascript,Angularjs,Jasmine,我对AngularJS和BDD与Jasmine的测试都是新手。我这个周末的目标是在这两方面都变得更有能力 我目前正在学习angularJS网站上提供的教程,我正在本地处理这些文件。在本文中,我们将简要介绍如何使用Jasmine创建角度测试 然而,我完全按照教程中的说明做了,Jasmine失败了。该测试只是为了确保在HTML中呈现3部手机。(有) 以下是测试: describe('PhoneListCtrl', function() { it('should create "phones"
describe('PhoneListCtrl', function() {
it('should create "phones" model with 3 phones', function() {
var scope = {},
ctrl = new PhoneListCtrl(scope);
expect(scope.phones.length).toBe(3);
});
});
我在tests.html页面上遇到的错误是:
ReferenceError:未定义PhoneListCtrl
下面是tests.html:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Jasmine Spec Runner v2.0.0</title>
<link rel="shortcut icon" type="image/png" href="jasmine/jasmine_favicon.png">
<link rel="stylesheet" type="text/css" href="jasmine/jasmine.css">
<script type="text/javascript" src="jasmine/jasmine.js"></script>
<script type="text/javascript" src="jasmine/jasmine-html.js"></script>
<script type="text/javascript" src="jasmine/boot.js"></script>
<!-- include source files here... -->
<script src="js/controllers.js"></script>
<!-- include spec files here... -->
<script type="text/javascript" src="spec/spec.js"></script>
</head>
<body>
</body>
</html>
我还尝试了以下方法:
describe('PhoneListCtrl', function(){
beforeEach(module('phonecatApp'));
it('should create "phones" model with 3 phones', inject(function($controller) {
var scope = {},
ctrl = $controller('PhoneListCtrl', {$scope:scope});
expect(scope.phones.length).toBe(3);
}));
});
但是上面提到的“模块”没有定义…教程项目是基于使用karma test runner来运行jasmine测试的
所有的JS文件都应该包含在karma配置文件test/karma.conf.JS
中。请参阅来自角形phonecat源的。包含PhoneListCtrl的行是:
'app/js/**/*.js'
可以使用npm test
运行测试,该测试等于karma start test/karma.conf.js
(该命令在package.json
文件中配置)
如果您已经按照上的说明克隆了angular phonecat项目,那么您应该已经有了正在工作的karma配置文件。如何定义
PhoneListCtrl
?如果它是mymodule.controller('PhoneListCtrl',…),那么它就不会像这样工作。@KarolisJuodelė我已经用它的定义方式更新了主要帖子:)模块没有定义,因为您没有加载角度模拟。js@Constantinos应该包括在哪里?文档中似乎没有任何关于角度模拟的内容!加载angular.js后立即在runner.html文件中
'app/js/**/*.js'