2017-02-09 9 views
0

У меня есть следующий случай:React - модульное тестирование с функцией настройки

describe('API - Input component',() => { 
    describe('Input element',() => { 
    it('should have a modifier to its class if data entered is erroneous',() => { 
     const wrapper = shallow(<Input error="Invalid data" />); 

     expect(wrapper.find('input').props().className).toBe('form-field__input form-field__input--error'); 
    }); 
    }); 
}); 

Это работает прекрасно. Пока я передаю некоторые данные в мою ошибку реквизита, следует ожидать, что класс модификатора должен пройти, и тест пройдет.

Теперь я хочу добиться того же, но с помощью функции настройки. Например:

function setup() { 
    const props = { 
    error: {} 
    }; 

    return shallow(<Input {...props} />); 
} 

describe('API - Input component',() => { 
    describe('Input element',() => { 
    it('should have a modifier to its class if data entered is erroneous',() => { 
     const wrapper = setup(how do I pass my props here?!); 

     expect(wrapper.find('input').props().className).toBe('form-field__input form-field__input--error'); 
    }); 
    }); 
}); 

Спасибо!

ответ

2

const wrapper = setup (как мне передать мои реквизиты здесь ?!);

и ответ просто бутафория себя как буквального Object{prop1: value1, prop2: value2 ,... , propN: valueN}:

const wrapper = setup({error: 'Invalid data'}); 

Знайте, что если предположить setup должно быть:

function setup (props) { 
    return shallow(<Input {...props} />); 
} 

Если вы хотите по умолчанию реквизита в установке, используйте Object.assign, чтобы расширить реквизиты по умолчанию в настройках с помощью реквизитов аргументов.

function setup (props) { 
    const defaultPropsOfSetup = { 
    error : 'Invalid error' 
    }; 
    props = Object.assign(defaultPropsOfSetup, props); 
    return shallow(<Input {...props} />); 
} 
+1

Удивительно, спасибо! – Manu

+0

Добро пожаловать –