2016-09-30 71 views
2

我有一個測試,我期待的對象數組。以下預期條件可以正常工作。但是由於系統每天都在測試行爲,我們需要更改預期的數據對象數組。 所以我的問題是,如何期待這些類型的對象數組的模式沒有期待的確切值?或者還有其他好的方法來處理這個問題嗎?量角器/茉莉花期待對象數組作爲模式

it('Verify the functionality of displaying correct data in Status grid table', function() { 
     expect(HomePage.getStatusGrid()).toEqual([ 
      { make : 'Make1', model : 'Model1', totLoads : '17.24', washDays : 'Wednesday', timeDay : '10:00-11:00' }, 
      { make : 'Make1', model : 'Model2', totLoads : '15.58', washDays : 'Wednesday', timeDay : '16:00-17:00' }, 
      { make : 'Make1', model : 'Model3', totLoads : '17.17', washDays : 'Monday', timeDay : '18:00-19:00' }, 
      { make : 'Make2', model : 'Model4', totLoads : '16.27', washDays : 'Monday', timeDay : '19:00-20:00' }, 
      { make : 'Make2', model : 'Model5', totLoads : '16.19', washDays : 'Thursday', timeDay : '19:00-20:00' }, 
      { make : 'Make2', model : 'Model6', totLoads : '15.01', washDays : 'Friday', timeDay : '10:00-11:00' }, 
      { make : 'Make3', model : 'Model7', totLoads : '16.94', washDays : 'Tuesday', timeDay : '11:00-12:00' }, 
      { make : 'Make3', model : 'Model8', totLoads : '15.72', washDays : 'Thursday', timeDay : '10:00-11:00' }, 
      { make : 'Make3', model : 'Model9', totLoads : '15.90', washDays : 'Saturday', timeDay : '16:00-17:00' } 
     ]); 
    }); 

回答

1

有一個custom matcher可能有助於隱藏匹配檢查的複雜性和實現可重用。

雖然,比網格行的直接方法循環和應用toMatch()匹配器可以足夠好:

var grid = [  
    { make : 'Make1', model : 'Model1', totLoads : '17.24', washDays : 'Wednesday', timeDay : '10:00-11:00' }, 
    { make : 'Invalid make', model : 'Model1', totLoads : '17.24', washDays : 'Wednesday', timeDay : '10:00-11:00' },  
]; 
grid.forEach(function (row) { 
    expect(row.make).toMatch(/Make\d+/); 
    expect(row.model).toMatch(/Model\d+/); 
    // TODO: more checks 
}); 

注意,如果HomePage.getStatusGrid()返回一個承諾,你需要明確地解決它:

HomePage.getStatusGrid().then(function (grid) { 
    grid.forEach(function (row) { 
     expect(row.make).toMatch(/Make\d+/); 
     expect(row.model).toMatch(/Model\d+/); 
     // TODO: more checks 
    }); 
}); 
+0

這正是我正在尋找的。 HomePage.getStatusGrid()返回一個承諾,所以我使用第二種方法。非常感謝! –