角度+茉莉花测试

时间:2014-05-17 10:08:44

标签: javascript angularjs jasmine

对于使用Jasmine的AngularJS和BDD测试,我是一个非常新的(全新的)。我本周末的目标是让两者都更加胜任。

我目前正在关注angularJS网站上提供的教程,而且我正在本地处理这些文件。在Chapter 2中,它简要介绍了如何使用Jasmine创建Angular测试。

但是,我完全按照教程说明并且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 is not defined

这里的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>

我知道js / controllers.js没有什么问题,因为在我的index.html页面中正在渲染3个手机(通过Angular),所以我确实在设置Jasmine的地方出了问题但是没有完全确定在哪里...

更新 PhoneListCtrl定义如下:

var phonecatApp = angular.module('phonecatApp', []);
phonecatApp.controller('PhoneListCtrl', function ($scope) { .. });

我也尝试了以下内容:

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);
  }));

});

但是上面我得到了&#39;模块&#39;没有定义......

1 个答案:

答案 0 :(得分:3)

教程项目Angular-phonecat基于angular-seed,它使用karma测试运行器来运行jasmine测试。

所有JS文件都应包含在karma配置文件test/karma.conf.js中。请参阅angular-phonecat来源的example。包含PhoneListCtrl的行是:

'app/js/**/*.js'

可以使用等于npm test的{​​{1}}运行测试(命令在karma start test/karma.conf.js文件上配置)

如果你按照tutorial main page的指示克隆了angular-phonecat项目,你应该已经有了工作的业力配置文件。