2014-03-13 50 views
3

我正在编写量角器测试套件,并且需要测试一些使用从另一个套件生成的页面的东西。我只能想出编写测试的一种方式,但它似乎是一个好办法不写它: 如何编写一个依赖于另一个套件变量的茉莉花测试套件? (茉莉花1.3)

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'的内部?

+0

你见过[这个量角器问题](https://github.com/angular/protractor/issues/592)吗? – glepretre

+0

我没有,但我试图将它们嵌套在一个描述中。今天晚些时候我会更多地讨论这个问题。 –

+0

你还在努力吗?如果我能更好地理解你想要做的事情,我想我可能会有所帮助。你能提供一个更具体的例子吗?在上面的例子中,最初的描述块有三个规范(它......),但是他们中没有一个断言什么,而是他们似乎在做某件事。通常情况下,你在之前的块中做事情,然后在块中做出断言,之前做过的事情产生了预期的输出或副作用。你的例子太抽象了,我不明白你为什么不遵循这种模式。 –

回答

1

一般来说,你不应该在'描述'区块内的茉莉花做任何设置登录。那里的代码在Jasmine正在设置你的测试时运行,而不是按正确的顺序。如果你只是把for循环放在'it'块内,你的第二种方法应该可以工作。