안녕하세요, 저는 Jest에서 단위 테스트를 작성하고 있지만, 현재 붙어있는 종류입니다. 계속 진행하고 조언을 구해야합니다. 단위 테스트에서 함수가 호출되었는지 확인하십시오.
export const submitOrder = async (body, key) => {
const clientRepo = new ClientRepository(db)
const companyRepo = new CompanyRepository(db)
const company = await getCompanyByKey(
companyRepo,
key
);
const client = await createClient(
clientRepo,
body
);
await addClientToCompany(
companyRepo,
client.id,
company.id
);
.. More things
}
I 쉽게 각 기능을 테스트 할 수
(getCompanyByKey
을
createClient
&
addClientToCompany
)을 조롱 저장소를 건네.
그러나 내 리포지토리 기능이 호출되었는지 확인하여 submitOrder
함수의 "흐름"을 테스트하고 싶습니다. 그러나 나는 각 저장소의 인스턴스를 필요로 할 것이고, 나는 submitOrder
함수가 될 때까지 인스턴스화하지 않는다.
내 기능을 단위 테스트하는 방법과 비슷합니다.
jest.mock('../repositories/ClientRepository');
jest.mock('../repositories/CompanyRepository');
test('should be able to submit an order', async() => {
const apiKey = 'mocked-super-key';
const body = getMockData();
const result = await submitOrder(body, apiKey);
expect(result).toMatchSnapshot();
expect(CompanyRepository.findByKey).toHaveBeenCalled();
expect(ClientRepository.create).toHaveBeenCalled();
expect(CompanyRepository.addClient).toHaveBeenCalled();
});
당신이 내 저장소가 호출 된 경우 내가 테스트 할 수있는 방법의 어떤 조언이 있습니까?
그래, 내가 너를 이해했다고 생각해. 다음과 같음 : 'container.register ('companyRepository', new CompanyRepository())'? 내 테스트 스위트에서 'container.register ('companyRepository ', new MockCompanyRepository())'와 동일한 작업을 수행하면 내 모의을 덮어 쓰지 않을까요? – mertje
우리는'container.register ('companyRepository', new CompanyRepository())가 어디에서 발생할지에 대해 상반되는 가정을하고 있다고 생각합니다. 테스트 도중 실행되지 않는 라인입니다. –
맞아요, 그래서 어떤 의존성이 필요한 기능과 어떤 환경 (생산 및 테스트)을 가리 키도록 일부 설정 파일이 필요합니까? – mertje