2014-01-06 77 views
5

對於某些測試場景,我遇到了需要針對多個值進行測試的問題,這些都是正常的。茉莉花期待(resultCode).toBe(200或409)

我想要做的東西如下:當resultCode要麼200409

expect(resultCode).toBeIn([200,409]); 

該規範應該通過。那可能嗎?

ADDED 感謝peter和dolarzo指導我創建匹配器。我遇到了addMatchers()的問題。所以,最後我在jasmine.js中添加了以下內容:

jasmine.Matchers.prototype.toBeIn = function (expected) { 
    for (var i = 0; i < expected.length; i++) 
     if (this.actual === expected[i]) 
      return true; 
    return false; 
}; 

這給了我一個工作解決方案。我現在可以根據需要做toBeIn。 (茉莉1.3.1)

+0

嘗試檢出https://github.com/pivotal/jasmine/wiki/Matchers。 –

回答

6

爲了使這樣的工作:

expect(3).toBeIn([6,5,3,2]); 

茉莉花有一個功能叫做匹配器:

這是一個關於如何申報他們的例子。我宣佈在最後,你要尋找的方法:

describe('Calculator', function(){ 
    var obj; 
    beforeEach(function(){ 
     //initialize object 
     obj = new Object(); 

     jasmine.addMatchers({ 
      toBeFive: function() { 
       return { 
        compare: function (actual, expected) { 
         return { 
          pass: actual === 5, 
          message: actual + ' is not exactly 5' 
         } 
        } 
       }; 
      }, 
      toBeBetween: function (lower,higher) { 
       return { 
        compare: function (actual, lower,higher) { 
         return { 
          pass: (actual>= lower && actual <= higher), 
          message: actual + ' is not between ' + lower + ' and ' + higher 
         } 
        } 
       }; 
      }, 
      toBeIn: function(expected) { 
        return { 
         compare: function (actual, expected) { 
          return { 
           pass: expected.some(function(item){ return item === actual; }), 
           message: actual + ' is not in ' + expected 
          } 
         } 
        }; 
       } 
     }); 


    }); 

這是你所需要的匹配:

toBeIn: function(expected) { 
        return { 
         compare: function (actual, expected) { 
          return { 
           pass: expected.some(function(item){ return item === actual; }), 
           message: actual + ' is not in ' + expected 
          } 
         } 
        }; 
       } 

重要茉莉2.0。我不得不使用jasmine.addMatchers({茉莉花specrunner.html但是當我噶配置它,我曾與更換茉莉花this.addMatchers({因爲噶使用茉莉花的早期版本

+0

匹配器是...感謝指針。我嘗試了使用jasmine.addMatcher和this.addMatcher的建議。 ..都沒有工作,我必須弄清楚爲什麼,我認爲另一個問題會是最好的,因爲它涉及requirejs/typescript。同時,我在原型中直接在jasmine.js中添加了一個新的匹配器,並且工作正常我更新了t他質疑我使用的結果。 – Paul0515

+0

萬一它有幫助對於這個代碼示例我使用了茉莉花2.0.0 – Dalorzo