2016-12-07 30 views
1

我使用下面的代碼返回隨機數組 我的問題是我應該如何用摩卡和chai單元測試它,因爲這裏提供的問題是每次運行隨機數字...JavaScript,用於隨機數的摩卡測試

var randomArray = function(start, end) { 
    var range = []; 
    var resetRange = function() { 
    for (let i = start; i < end; i++) { 
     range.push(i); 
    } 
    shuffle(range); 
    }; 

    return function(n) { 
    if (range.length === 0) { 
     resetRange(); 
    } 
    return range.splice(0, n); 
    }; 
}; 


var arr = randomArray(10,20); 

arr(10)將提供例如

[15, 16, 14, 17, 11, 19, 18, 10, 12, 13] 

arr(3)將提供例如

[18, 15, 10] 
+0

所以,不要喲想什麼期望?是否返回一個數字或哪個隨機數字返回? –

+0

@JuanPicado - 不知道我想驗證功能是否正在工作,所以即時開放的想法... –

回答

3
  1. 你明顯可以驗證元素的數量。
  2. 您可以運行兩次(或多次)並驗證元素是否變化(在chai assert.notDeepEqual中)。
  3. 如果每個元素都來自特定範圍,那麼您也可以驗證。只需遍歷生成的數組並確認每個元素大於start且小於end
  4. 您可以使用不同的startend值測試點#3。
  5. 測試邊緣案例startend,例如,爲start > endstart === endstart < 0,...

這取決於置信水平要達到和時間,您可以在該測試中度過。幾點我提到的

例子(在ES5語法的問題是使用它):

var assert = require('chai').assert; 

var testLength = function(length) { 
    // WHEN 
    var actualLength = randomArray(10, 20)(length).length; 

    // THEN 
    assert.equal(actualLength, length); 
}; 

var testElementsRange = function(start, end) { 
    // WHEN 
    var actualArray = randomArray(10, 20)(10); 

    // THEN 
    for (var index = 0; index < actualArray.length; ++index) { 
     assert.isAtLeast(actualArray[index], start); 
     assert.isAtMost(actualArray[index], end); 
    } 
} 

describe('randomArray', function() { 
    describe('generates array', function() { 
     it('with length 3', function() { 
      testLength(3); 
     }); 

     it('with length 10', function() { 
      testLength(10); 
     }); 

     it('with random elements', function() { 
      // WHEN 
      var array1 = randomArray(10, 20)(10); 
      var array2 = randomArray(10, 20)(10); 

      // THEN 
      assert.notDeepEqual(array1, array2); 
     }); 

     it('with elements within 10-20 range', function() { 
      testElementsRange(10, 20); 
     }); 
    }); 
}); 
+0

感謝1+,你能提供例子,你會如何測試它? –

+0

謝謝我的意思是一些代碼示例:) –

+0

添加了一些示例 – luboskrnac