2014-03-13 37 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'塊內,你的第二種方法應該可以工作。