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

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

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

export default {
  name: ComponentName,
};

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



답변

jest 23.3.0 버전에서

expect(string).toMatch(string)

문자열이 필요합니다.

사용하다:

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

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


답변

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

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


답변

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

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

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

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


답변

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

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);


답변