2016-09-30 3 views
0

私はChai.jsを使用していますが、オブジェクトに部分キーが含まれているかどうかを確認しようとしています。私がテストにこのオブジェクトを持っているchai jsを使って正規表現を使ってオブジェクトに部分的なキーが含まれているかどうかをチェックする方法は?

::私に説明してみましょう

var obj = { 
    "one/two/three": "value" 
} 

そして私は、オブジェクトobjがキー"one/two/three"に含まれている部分キー"one"が含まれている場合Chai.jsを使用してチェックしたいです。

ここで私はキーが含まれていることを確認してください。

({ foo: 1, bar: 2 }).should.have.keys('bar'); 
({ foo: 1, bar: 2, baz: 3 }).should.include.keys('foo'); 
({ foo: 1, bar: 2, baz: 3 }).should.contain.keys('baz'); 

そして、ここでは文字列が部分文字列を含んでいる場合、私がチェック:

'foobar'.should.match(/^foo/) 

をその後、私のようなものを持って、両方をマージしたいですこの:

({ foo: 1, bar: 2, baz: 3 }).should.contain.keys.which.match('fo'); 

あなたはこれを処理する方法を知っていますか?

ありがとうございました!

+0

Chaiにこれに対応する組み込みのアサーションがあると、私は非常に驚いていますが、自分のドキュメントを追加する方法についてはドキュメントには触れていません。上記のために自分自身を追加することはかなり簡単です。 –

+0

私はちょうど私自身の作成についてのドキュメントを見つけました、面白いようです、ありがとう! – Barudar

答えて

0

私が考えることができる最も単純な方法は、オブジェクトのキーを繰り返し実行し、それらのどれかが正規表現に一致するかどうかを確認することです。あなたはArray.someと慣れていない場合は

expect(Object.keys({ foo: 1, bar: 2, baz: 3 }).some(function(key) { 
    if (key.match(/^foo/) != null) { 
     return true; 
    } 
    return false; 
})).to.equal(true); 

、それはすぐに、すぐにそれが到達したとしてtrueを返しますので、同様にあなたはその後、所望の結果を達成するために、いくつかのチャイコードでこれをラップすることができます

Object.keys({ foo: 1, bar: 2, baz: 3 }).some(function(key) { 
    if (key.match(/^foo/) != null) { 
     return true; 
    } 
    return false; 
}); 

そのコールバックによって真理値が返されるキー。

+0

気付いていないかもしれませんが、私はChaiのAPIでこれをやりたかったのです。 – Barudar

関連する問題