Если вы тестируете компонент без подключения HOC. Тогда вы никогда не увидите реквизиты из mapStateToProps, поскольку импортированный вами компонент не запускает функцию соединения.
Вам нужно будет импортировать подключенный компонент, а затем обернуть его в провайдере. wrapper
должен иметь все необходимое.
-
Редактировать: Если нет возможности получить доступ к подключенному компоненту, просто используйте компонент и объявите все реквизиты вручную.
Примерно так:
import { Foo } from '../foo';
const props = {
title: 'Hello',
subTitle: 'World'
};
describe('<Foo />', () => {
test('should make props available', () => {
const wrapper = mount(<Foo {...props} />);
expect(wrapper.props).toEqual(props);
});
});
Как это другие, я выбрал бы класс. Изменяемые структуры противны. (И поскольку Jared предлагает, я использовал бы блок итератора. Кодирование руки перечислитель трудно для разбираний.)
Посмотрите этот поток для примера перечислителя списка, являющегося изменяемым порождением структуры проблемы...
Самый легкий способ записать перечислитель в C# с "шаблоном" возврата урожая. Например.
public IEnumerator<int> Example() {
yield return 1;
yield return 2;
}
Этот шаблон сгенерирует весь код перечислителя под капотом. Это вынимает решение из Ваших рук.
Перечислитель является по сути изменяющейся структурой, так как он должен обновить внутреннее состояние для хождения дальше к следующему значению в исходном наборе.
По-моему, структуры должны быть неизменными, таким образом, я использовал бы класс.
Запишите этому использование yield return
.
Относительно того, почему Вы могли бы иначе выбрать между class
или struct
, если Вы делаете это a struct
затем это упаковывается, как только это возвращается как интерфейс, таким образом делая это a struct
правые дела дополнительное копирование для происхождения. Не видьте точку этого!
Подробно остановиться на @Earwicker: Вы обычно более обеспечены не запись типа перечислителя и вместо этого использование yield return
чтобы иметь компилятор пишут это для Вас. Это вызвано тем, что существует много важной тонкости, которую Вы могли бы пропустить, если Вы делаете это сами.
Посмотрите ТАК вопрос, "Для чего используется ключевое слово урожая в C#?" еще для некоторых деталей о том, как использовать его.
Также у Raymond Chen есть серия сообщений в блоге ("Реализация итераторов в C# и его последствиях": части 1, 2, 3, и 4) которые показывают Вам, как реализовать итератор правильно без yield return
, который показывает, насколько сложный это, и почему необходимо просто использовать yield return
.
Есть пара сообщений в блоге , посвященных именно этой проблеме. По сути, структуры перечислителя - действительно плохая идея ...