Вы можете сделать 2 теста:
- Первый экземпляр
new Map()
, применить его //some code
без установки идентификатора, затем вызвать handleLogic()
- Второй экземпляр
new Map()
, примените его //some code
и установите идентификатор для вашей карты с помощью yourMap.set('id', '123')
, затем вызовите handleLogic()
Тогда вы бы применили свое заявление if.
Обновление 1:
По запросу, вот как я бы это реализовал. Я предполагаю, что вы не хотите передавать параметр в вашу функцию handleLogic()
, поэтому вам придется играть с вашей функцией context
. Например:
// main.js
const map = new Map();
export function handleLogic() {
this.map.set('john', 'doe') // Here we use current context, this.map === map
if (!this.map.has('id')) return false
return true
}
Ваш тестовый файл может выглядеть так:
// main.test.js
import { handleLogic } from './main'
test('it returns false without id', () => {
const map = new Map()
map.set('foo', 'bar')
expect(handleLogicHandler(map)).toBe(false)
})
test('it returns true with id', () => {
const map = new Map()
map.set('foo', 'bar')
map.set('id', '123')
expect(handleLogicHandler(map)).toBe(true)
})
function handleLogicHandler(map) {
this.map = map // Here we define our own testing context
return handleLogic.apply(this) // and apply it to the function
}