2016-09-30 3 views
0

Chai.js를 사용하고 있는데 객체에 부분 키가 있는지 확인하려고합니다. 나는 시험이 객체가chai js를 사용하여 객체에 부분 키가 정규식과 함께 포함되어 있는지 확인하는 방법은 무엇입니까?

: 설명해 드리죠

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

그리고 객체 obj"one/two/three"에 포함되는 부분 키 "one" 포함되어있는 경우 Chai.js을 사용하여 확인하시기 바랍니다. 나는 모두가 같은 것을 가지고 병합하고 싶은, 그런

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

: 나는 문자열이 문자열이 포함되어 있는지 확인 여기

({ 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'); 

을 그리고 다음은

나는 키가 포함되어 있는지 확인 이 :

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

이 문제를 해결하는 방법을 알고 있습니까?

도움 주셔서 감사합니다.

+0

Chai가 이에 대한 어설 션을 내장하고 있다면 놀라실 것입니다. 그러나 설명서에는 자신의 설명서를 추가하는 방법이 나와 있습니다. 위의 내용을 추가하는 것은 매우 사소한 일입니다. –

+0

난 그냥 내 자신을 만드는 것에 대한 문서를 발견했습니다, 재미있는 것, 감사합니다! – Barudar

답변

0

내가 생각할 수있는 가장 간단한 방법은 Object의 키를 반복하고 그 중 하나가 정규식과 일치하는지 확인하는 것입니다.

Object.keys({ foo: 1, bar: 2, baz: 3 }).some(function(key) { 
    if (key.match(/^foo/) != null) { 
     return true; 
    } 
    return false; 
}); 
당신은 다음과 같이 원하는 결과를 달성하기 위해 약간의 차이 코드에서이 작업을 마무리 할 수 ​​

: 그것은 도달

당신이 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를 반환됩니다 콜백이 true 값을 반환하게하는 키.

+0

당신은 눈치 채지 못했지만 Chai의 API로 이것을하고 싶었습니다. – Barudar