繁体   English   中英

AngularJS因果/茉莉花测试导致测试文件之间发生冲突

[英]AngularJS karma/jasmine testing causes conflict between test files

我在进行中途测试(即集成测试,这意味着它们介于单元测试和E2E测试之间)时遇到了问题。

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

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

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

因此,举例来说,我有一个集成测试需要注销用户,而另一个集成测试则需要注销用户,因此两者相互干扰。

是否可以通过某种方式设置Karma / Jasmine,以便每个测试文件都将引导它自己的AngularJS实例进行测试? 我正在尝试找出方法,但除非我强迫Karma / Jasmine一次进行一项测试,否则我认为这不可能。

有什么想法吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM