AngularJs的TDD

首先咱们会写一个简单的基于AngularJs的应用。html

html代码: app

<html>工具

<head>测试

<script src='angula.js'></script>htm

</head>ip

<body>get

<div ng-app='demoApp'>it

<div ng-controller='demoController'>io

{{name}}asm

</div>

</div>

<script src='demo.js'></script>

</body>

</html>

demo.js代码:

var app = angular.module('demoApp', []);

app.controller('demoController', ['$scope', function ($scope) {

 

}]);

OK。在咱们有了基本的js文件后,咱们就须要写咱们测试文件了。咱们使用的测试工具是karma,karma的配置文件里的frameworks使用的是Jasmine。

在完成karma的配置后,咱们就应当着手写测试文件了。

首先,在写测试的时候,咱们必定要明白本身测试的指望是什么,目标是什么,测试的用例有哪些。当咱们清楚明白地知道本身想要测什么的时候,就以写出优雅的测试代码以及漂亮的功能代码。

开始写测试文件,demo.test.js:

我要测angular的controller, demoController, 因而我就describe('demoController', function () {});

以后我要拿到我要测试的指望目标啊,因而咱们接着写:

describe('demoController', function () {

  var $controller;

  beforeEach(function () {

    module('demoApp');

    inject(function ($injector) {

      $controller = $injector.get('$controller')

    });

  });

})

写到这里,咱们就要想了,测demoController 的什么呢,因而,咱们case来了,好比说,咱们指望$scope.name 是 'Hello world':

describe('demoController', function () {

  var $controller;

  beforeEach(function () {

    module('demoApp');

    inject(function ($injector) {

      $controller = $injector.get('$controller')

    });

  });

  it('$scope.name should be equal hello world', function () {

    var $scope;

    $scope = {}

    $controller('demoController', {$scope: $scope})

    expect($scope.name).toEqual('Hello world');

  });

});

OK,咱们的测试写完了,使用karma命令来跑测试. 99%测试必定会挂,为何呢?由于咱们的demo.js里,demoController中尚未$scope.name.而且咱们指望$scope.name = 'Hello world'.因而,在demo.js里写上:

app.controller('demoController', ['$scope', function ($scope) {

  $scope.name = 'Hello world';

}]);

运行测试,Bingo!

好了,咱们能够继续TDD了。

写漂亮的测试,写优雅的代码。Make it run.

相关文章
相关标签/搜索