Jest : 개체 키 및 속성 테스트 방법


85

나는이 mapModule내가 구성 요소를 가져오고 내보낼 어디 :

import ComponentName from '../components/ComponentName';

export default {
  name: ComponentName,
};

mapModule내 보낸 키, 값이 올 바르고 null이거나 정의되지 않았는지 테스트하려면 어떻게 해야합니까?

답변:


118

jest 23.3.0 버전에서

expect(string).toMatch(string) 

문자열이 필요합니다.

사용하다:

const expected = { name:'component name' }
const actual = { name: 'component name', type: 'form' }
expect(actual).toMatchObject(expected)

결과는 테스트를 통과했습니다.


97

다음 중 하나를 사용할 수 있습니다.

toEqual 및 toMatchObject는 객체에 대한 템플릿 매처입니다.

let Obj = {name: 'component name', id: 2};
expect(oneObj).toEqual({name: 'component name'}) // false, should be exactly equal all Obj keys and values  
expect(oneObj).toMatchObject({name: 'component name'}) // true

또는 toHaveProperty를 쉽게 사용하십시오.

let Obj = {name: 'component name'};
expect(oneObj).toHaveProperty('name') // true
expect(oneObj).toHaveProperty('name', 'component name') // true

24
이 대답은 더 이상 정확하지 않습니다. toMatch해야 toMatchObject같은 @ user3605834에 의해 지정된
크리스토퍼 Dorph에게

1
@KristofferDorph의 코멘트에 따라 업데이트되었습니다
Despertaweb

7

있다는 사실을 숙지 .toMatchObject검사는 "자바 스크립트 객체는 객체의 속성의 부분 집합을 일치하는지 확인합니다." 따라서 다음과 같은 의도하지 않은 주장이있을 수 있습니다.

expect({ a: 1, b: 2 }).toMatchObject({ a: 1 }); // pass

정확하게 물체를 일치시킬 경우, 당신은 사용해야합니다 .toStrictEqual, 사용할 수 가입일 jest 23:

expect({ a: 1, b: 2 }).toStrictEqual({ a: 1 }); // fail

실제로 그것은 정확히 toMatchObject가 설계된 주장입니다. 이 동작을 원하지 않으면 toEqual을 사용할 수 있습니다.
Dan

0

단일 키의 경우 확인할 수 있습니다.

expect(Boolean(obj[prop])).toBe(true | false);

여러 키 (모두 있어야 함)의 경우 다음을 사용할 수 있습니다.

expect(Boolean(obj[prop1]) && Boolean(obj[prop2])).toBe(true | false);

여러 키 (하나가 있어야하는 경우)의 경우 다음을 사용할 수 있습니다.

expect(Boolean(obj[prop1]) || Boolean(obj[prop2])).toBe(true | false);

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.