Javascript 角度+;茉莉花试验

Javascript 角度+;茉莉花试验,javascript,angularjs,jasmine,Javascript,Angularjs,Jasmine,我对AngularJS和BDD与Jasmine的测试都是新手。我这个周末的目标是在这两方面都变得更有能力 我目前正在学习angularJS网站上提供的教程,我正在本地处理这些文件。在本文中,我们将简要介绍如何使用Jasmine创建角度测试 然而,我完全按照教程中的说明做了,Jasmine失败了。该测试只是为了确保在HTML中呈现3部手机。(有) 以下是测试: describe('PhoneListCtrl', function() { it('should create "phones"

我对AngularJS和BDD与Jasmine的测试都是新手。我这个周末的目标是在这两方面都变得更有能力

我目前正在学习angularJS网站上提供的教程,我正在本地处理这些文件。在本文中,我们将简要介绍如何使用Jasmine创建角度测试

然而,我完全按照教程中的说明做了,Jasmine失败了。该测试只是为了确保在HTML中呈现3部手机。(有)

以下是测试:

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'