基本的testacular / jasmine /角度设置和使用

时间:2013-02-08 22:37:01

标签: angularjs jasmine karma-runner

我是Jasmine的新手,但想在Javascript中做更多的TDD。我一直在使用Google的Angular库,我知道Testacular是专为测试Angular应用而创建的。

我已经阅读了Jasmine文档并观看了Testacular设置视频,但我无法获得最基本的测试。假设我有三个文件:

modules.js
controller.js
appSpec.js

modules.js我的模块定义包含一些.factory(...)服务和一些.directive(...)自定义指令。 controller.js包含我的控制器,用于将模块连接到html视图。

到目前为止,这么好。接下来我添加了appSpec.js。假设我想用它来测试我的模块中的一个服务,名为“Data”,它有一个方法,“getData()”返回一个资源。

在testactular init中,我告诉它要观看所有三个文件。我运行Testacular,它告诉我它正在观看正确的文件。超级。

我不明白的是我如何让Jasmine规范知道如何查看模块和控制器以便对它们进行测试。如果我只是说:

describe('Data Service', function(){
  it ('should retrieve two items from the database', function(){
    data = Data.getData() //my angular service
    expect(data.length).toBe(2);
  });
});

毫不奇怪,它不知道Data.getData()是什么。

似乎很明显,在我开始编写套件之前,我应该把模块定义和控制器放到规范中。它必须如此明显,以至于我在文档中没有看到人们如何做到这一点。教程似乎开始在spec.js文件中编写规范并假设一切正常。

我在这里看过其他帖子,其中提出了类似的问题,但不可否认,他们都有一个我似乎缺乏的基础。例如,一篇文章谈到不是手动创建控制器的实例,而是注入依赖关系。他为什么要创建一个新的$ rootScope对象,如何引用他的模块等等......

我理解我的问题可能只是缺乏对Jasmine框架的基本理解,但我似乎无法从Jasmine自述文件中获得更多理解。有人能指出我应该如何运作的基本解释吗?

感谢。

2 个答案:

答案 0 :(得分:2)

尝试在茉莉花测试中进行module('myModule')

以下是一些开源角度项目,需要进行大量测试:

angular-app

angular-ui

bootstrap

答案 1 :(得分:0)

包含测试定义的方式是通过karma.config.js文件

files = [ JASMINE, JASMINE_ADAPTER, '../app/lib/icg/object.js', '../app/lib/icg/geometry.js', '../app/lib/icg/ubiquity.js', '../test/unit/icgUbiquitySpec.js', '../test/unit/icgObjectSpec.js' ];

在此定义哪些文件加载​​到浏览器中,第一个不包含“Spec”字样的文件是定义,包含的文件是我的测试文件。您需要在测试之前包含您的定义,以便在运行测试之前定义它们,这就是我最后包含所有规范文件的原因。