2017-03-21 60 views
1

一些我很好奇如何測試value成爲stringnumberchai。我知道如何寫一個stringnumber的測試,當它是一個嚴格的測試。但如何處理呢,value可能是其中之一?檢查是否值是一個字符串或摩卡/柴測試

用於字符串測試:

describe("test",() => { 
    it("should be a string",() => { 
     let value = "1234"; 
     value.should.be.a("string"); 
    }); 
}); 

一個測試爲一個數字:

describe("test",() => { 
    it("should be a number",() => { 
     let value = 1234; 
     value.should.be.a("number"); 
    }); 
}); 

是否存在的chai一個內置的方式做到這一點?

我知道我可以做一些解決方法,如下所示。但那種感覺有點像hacky

describe("test",() => { 
    it("should be a number or string",() => { 
     let value = 1234; 
     (typeof value).should.be.oneOf(["string", "number"]); 
    }); 
}); 

回答

2

你可以寫你自己的方法:

chai.Assertion.addMethod('stringOrNumber', function() { 
    //Check if it is a string or a number here 
}); 

然後在您的測試:

expect(myValue).to.be.stringOrNumber(); 

plugin utilities documentation

+0

這是很酷...我還沒有挖得足夠深進入柴,所以我沒有意識到我可以添加自己的斷言。將來肯定會使用這個。 – LostJon

+0

不錯的主意,謝謝!但我會認爲這種選擇已經內建,我還不知道。而對於一次檢查,它似乎是實施一種自己的方法的開銷。但對於其他的東西,這是一個有用的想法,它真的很乾淨,知道!謝謝! – eisbehr

相關問題