gpt4 book ai didi

jasmine - 有条件地忽略 Karma/Jasmine 的单个测试

转载 作者:行者123 更新时间:2023-12-03 11:48:07 25 4
gpt4 key购买 nike

我有一些测试在 PhantomJS 中失败,但在其他浏览器中没有。

我希望在我的 watch 任务中使用 PhantomJS 运行时忽略这些测试(因此新的浏览器窗口不会获得焦点并且性能要快一些),但是在我的标准测试任务和我的 CI 管道中,我想要所有在 Chrome、Firefox 等中运行的测试...

我考虑过像 foo.spec.dont-use-phantom.js 这样的文件命名约定并排除我的 Karma 配置中的那些,但这意味着我必须将失败的单个测试分离到它们自己的文件中,将它们与它们的逻辑 describe 分开。块并拥有更多具有奇怪命名约定的文件通常会很糟糕。

简而言之:

有没有办法扩展 Jasmine 和/或 Karma 并以某种方式注释单个测试以仅在某些配置下运行?

最佳答案

我可以分享我的经验。

在我们的环境中,我们有几个使用不同浏览器和不同技术运行的测试。
为了在所有平台和浏览器上始终运行相同的套件,我们在 karma ( helper.js ) 中加载了一个帮助文件,其中包含一些全局加载的特征检测功能。

IE。

function isFullScreenSupported(){
// run some feature detection code here
}

您也可以使用 Modernizr为此也是如此。

在我们的测试中,我们将东西包装在 if/else 中。像下面这样的块:
it('should work with fullscreen', function(){
if(isFullScreenSupported()){
// run the test
}
// don't do anything otherwise
});

或用于异步测试
it('should work with fullscreen', function(done){
if(isFullScreenSupported()){
// run the test
...
done();
} else {
done();
}
});

虽然它有点冗长,但它会为您面临的那种场景节省时间。

在某些情况下,您可以使用用户代理嗅探来检测特定的浏览器类型或版本 - 我知道这是不好的做法,但有时实际上没有其他方法。

关于jasmine - 有条件地忽略 Karma/Jasmine 的单个测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32215096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com