AngularJS karma / jasmine测试会导致测试文件之间发生冲突

时间:2015-04-06 16:53:59

标签: javascript angularjs automated-tests integration-testing karma-jasmine

我在运行中途测试时遇到了问题(也称为集成测试,这意味着他们在单元测试和E2E测试之间的中途)。

我的构建是带有RequireJS的AngularJS(在Karma中需要使用RequireJS插件来运行测试)。我实际上正在使用一个名为AngularAMD的插件来让它们协同工作。因此,当我运行测试时,首先必须执行一个bootstrap文件,以确保Angular应用程序已初始化,然后才能对应用程序运行测试。

由于它们是集成测试,因此它们检查服务是否与真实的http请求连接,并且正在进行转换(即,已注销的用户现在已登录)。因此,这些是需要时间来接收响应的异步测试。

我的问题 - Karma / Jasmine似乎只在开始时引导角度应用程序一次,然后每个测试似乎在运行其测试时使用此实例。因此,如果在两个测试中使用了一个服务,并且持久缓存状态(即用户已登录),则每个测试都处于相同的状态。

因此,例如,我有一个需要用户注销的集成测试,以及需要用户登录的另一个集成测试,因此每个都会干扰另一个。

是否有可能以某种方式设置Karma / Jasmine,每个测试文件将引导它自己的AngularJS实例进行测试?我试图弄清楚如何做到这一点,但我认为这可能是不可能的,除非我强迫Karma / Jasmine一次进行一次测试。

思想?

1 个答案:

答案 0 :(得分:0)

Jasmine has beforeEach/beforeAll and afterEach/afterAll methods您可以为您的环境设置定义。根据您在测试文件之间的范围,可能必须在每个文件中重新定义beforeX方法,但这应该会在每次测试之前将您带到一个干净的应用程序。