Javascript 它上面的角度量角器环(';一些测试';)测试

Javascript 它上面的角度量角器环(';一些测试';)测试,javascript,angular,protractor,Javascript,Angular,Protractor,我绞尽脑汁,在互联网上搜寻一种方法,使量角器e2e测试代码同步,但毫无效果!我希望实现的是无限期地重复相同的量角器测试,直到我关闭浏览器或结束测试,或通过命令行上的^(control)c结束测试。下面是我正在尝试做的一个例子: import { AppPage } from './app.po'; import { browser } from 'protractor'; import { interval } from 'rxjs'; import { takeWhile, switchMap

我绞尽脑汁,在互联网上搜寻一种方法,使量角器e2e测试代码同步,但毫无效果!我希望实现的是无限期地重复相同的量角器测试,直到我关闭浏览器或结束测试,或通过命令行上的^(control)c结束测试。下面是我正在尝试做的一个例子:

import { AppPage } from './app.po';
import { browser } from 'protractor';
import { interval } from 'rxjs';
import { takeWhile, switchMap } from 'rxjs/operators';
describe('workspace-project App', () => {
    let page: AppPage;
    let testComplete = false;

    beforeEach(() => {
       page = new AppPage();
    });

    while (true) { // Doesn't work 
        it('should display welcome message', () => {
            page.navigateTo();
            expect(page.getParagraphText()).toEqual('Welcome to testAngular6!');
            console.log('Executing tests');
            browser.wait(function () { return true; }, 5000);
        });
    }

});
但是围绕“it”测试的while循环不起作用,并且一直在循环。我意识到我不能使用任何量角器/web驱动程序等待命令,甚至rjx interval API来实现这一点,因为这纯粹是一个JavaScript问题。因为JavaScript是单线程的。我怎么可能做到这一点呢?互联网上有很多关于这方面的问题,但有些没有答案,而另一些充其量是相似的,但并不完全相同!非常感谢您的帮助。

我找到了一个

您需要做的是将it块包装到函数中,然后可以从循环中调用该函数

例如:

descripe('这是我的循环测试!',函数(){
var输入=[1,2,3];
var输出=[10,20,30];
功能测试\u我的\u次\u十次(输入、输出){
它('应该将'+input+'乘以10,得到'+output,function()){
expect(输入*10).toEqual(输出)
});
}
对于(var x=0;x

我希望这有帮助

也许这个软件包可以帮助您这是Jasmine design不支持的。Jasmine将先加载每个spec.js,然后再执行其中的任何
it
块。Jasmine需要知道加载后spec.js中有多少
it
块。但是您的
while
循环将生成无限
it
block.Hi-Oleg。我只是想对你的回答说声谢谢。我投了赞成票,是的,它解决了我的困难。非常感谢。嗨,FlexibleMan,谢谢你的反馈,但似乎你没有。很抱歉,Oleg。我按了几次向上投票箭头,但它闪烁着一个简短的弹出窗口,表示声誉低于15的人的投票已被记录但未显示。不知道为什么!!你应该能够接受正确的答案
describe('this is my looping test!', function() {
  var input = [1,2,3];
  var output = [10, 20, 30];

  function test_my_times_ten(input, output) {
    it('should multiply ' + input + ' by 10 to give ' + output, function() {
      expect(input * 10).toEqual(output)
    });
  }

  for(var x = 0; x < input.size; x++) {
    test_my_times_ten(input[x], output[x]);
  }
});