Как проверить возвращаемое значение в Jest - PullRequest
2 голосов
/ 25 марта 2020

Я выполняю модульное тестирование с помощью jest и смог успешно выполнить некоторые из них, но есть определенный код, который я не знаю, как тестировать.

У меня есть метод Create Organization, который необходимо проверить в первую очередь. если организация уже существует.

async createOrganization(opt) {
    try {
        const organizationExist = await this.OrganizationRepository.getOne({name: opt.name})
        if (organizationExist) {
            throw new Error('Organization already exist')
        }    
    } catch (error) {
        throw error
    }

    let organizationObject = {}
    organizationObject.name = opt.name    
    return this.OrganizationRepository.save(organizationObject)
}

и до сих пор это код модульного тестирования, который я смог охватить

describe('Create Organization', () => {
    it('should call getOne function', () => {
        const mockGetOne = jest.spyOn(OrganizationRepository.prototype, 'getOne')
        organizationService.createOrganization(expectedOrganization)
        expect(mockGetOne).toHaveBeenCalledWith({name: 'sample org'})
    })

    it('should return created organization', async () => {
        const mockSave = jest.spyOn(OrganizationRepository.prototype, 'save')
        mockSave.mockReturnValue(Promise.resolve(expectedOrganization))
        const result = await organizationService.createOrganization({name: 'sample org'})
        expect(mockSave).toHaveBeenCalledWith({name: 'sample org'})
        expect(result).toBe(expectedOrganization)
    })
})

, теперь я хочу протестировать эту часть

const organizationExist = await this.OrganizationRepository.getOne({name: opt.name})
if (organizationExist) {
    throw new Error('Organization already exist')
}

Я хочу выдать ошибку, если организация уже существует, используя параметр имени.

Надеюсь, вы, ребята, можете мне помочь. Спасибо

Ответы [ 2 ]

2 голосов
/ 25 марта 2020

вы можете использовать toThrowError для проверки этого сценария.

it("Should throw error", async () => {
    const mockGetOne = jest.spyOn(OrganizationRepository.prototype, 'getOne')
    await organizationService.createOrganization({ name: 'sample org' }); ;
    expect(mockGetOne).toHaveBeenCalledWith({ name: 'sample org' });

    // Test the exact error message
    expect( organizationService.createOrganization({ name: 'sample org' }))
    .resolves
    .toThrowError(new Error("Organization already exist"));
});

0 голосов
/ 25 марта 2020

Вы ищете toThrow () ?

expect(() => someFunctionCall()).toThrow();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...