【问题标题】:How to write a jasmine test suite that depends on variables from another suite? (jasmine 1.3)如何编写一个依赖于另一个套件变量的茉莉测试套件? (茉莉花1.3)
【发布时间】:2014-03-13 18:25:54
【问题描述】:

我正在编写量角器测试套件,并且需要测试使用从另一个套件生成的页面的东西。我只能想出一种编写测试的方法,但这似乎不是一个好的编写方法:

var someStuffToSave = [];

describe('description of first thing', function(){
    it('should generate some things', function(){
        someStuffToSave.push(generateSomeThings());
    });
    it('should generate some things', function(){
        someStuffToSave.push(generateSomeThings());
    });
    it('should generate some things', function(){
        someStuffToSave.push(generateSomeThings());
        element(by.id("something")).getText().then(function(){
          for(var i = 0; i < someStuffToSave.length; i++) (function(){
             var idx = i;
             describe('thing analysis' + idx, function(){
                it('should be something', function(){
                   expect(someStuffToSave[idx]).toEqual(true);
                });
             });
          })();
      });
    }); 
});

我更愿意做这样的事情,但问题是第二个描述的内部立即执行,而不是等待第一个描述完成。

var someStuffToSave = [];
describe('description of some thing', function(){
    it('should generate some things', function(){
        someStuffToSave.push(generateSomeThings());
    });
    it('should generate some things', function(){
        someStuffToSave.push(generateSomeThings());
    });
    it('should generate some things', function(){
        someStuffToSave.push(generateSomeThings);
    }); 
});
describe('analyzing things', function(){
    for(var i = 0; i < someStuffToSave.length; i++)function(){
        var idx = i;
        describe('thing ' + idx, function(){
            it('should be something', function(){
                expect(someStuffToSave[idx]).toEqual(true);
            });
        });
     }
});

有没有办法在第一个描述中没有'then'的情况下写这个?

【问题讨论】:

  • 你见过this Protractor issue吗?
  • 我没有,但我尝试将它们都嵌套在描述中。今天晚些时候我会再玩这个。
  • 你还在努力解决这个问题吗?我想如果我能更好地理解你想要做什么,我可能会提供帮助。你能提供一个更具体的例子吗?在上面的示例中,初始描述块具有三个规范(它......)但是它们都没有断言任何东西,而是它们似乎在做某事。通常,您在 before 块中执行操作,然后在 it 块中断言“之前”所做的事情产生了预期的输出或副作用。你的例子太抽象了,我无法理解你为什么不遵循这种模式。
  • 实际测试有几千行,所以我试着把它缩短为一个例子。在实际程序中,在最初的it语句中,有大量的断言,同时它们正在收集有关站点的信息以供以后的测试进行测试。我最终做的是将第二个测试嵌套到一个在第一个测试结束时解决的 Promise 中。这不是很漂亮的 IMO,但它确实有效。

标签: javascript jasmine protractor jasmine-node


【解决方案1】:

一般来说,您不应该在 Jasmine 中的“描述”块内进行任何设置登录。那里的代码在 Jasmine 设置测试时运行,但顺序不正确。如果您只是将 for 循环放在“it”块中,您的第二种方法应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多