2015-09-03 2 views
0

Я пытаюсь установить атрибут сущности не null, установив его как none-optional.Как работает базовый атрибут объекта Data Data?

Но когда я назначаю атрибут nil в тестовом примере, он не сообщает об ошибке или исключении, и тест прошел успешно. И, кстати, как я могу убедиться, что этот атрибут не является дополнительным при модульном тестировании?

Baby *baby = [self.babyModel createWithName:nil]; 
XCTAssertNil(baby.name); 

И когда я проверить схему таблицы в SQLite, не установлено, что это будет не нулевым. Означает ли это, что это ограничение гарантируется базовым стеклом данных вместо sqlite?

ответ

1

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

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

В любом случае, я не уверен, что вы пытаетесь проверить с приведенным выше случаем. Вы тестируете функцию createWithName: на babyModel? Вы пытаетесь проверить, что createWithName: не позволяет создать объект Baby без имени? Если вы ответите на какой код, который вы пытаетесь протестировать, я могу помочь вам написать более подходящий тест.

+0

Спасибо. Означает ли это, что дополнительная настройка вступит в силу при сохранении контекста? Да, я тестирую метод createWithName: метод BabyModel и хочу, чтобы он не допускал пустого имени. –

+0

Необязательный параметр - это ограничение на базу данных, это не позволит вам сохранять недопустимые данные. Для вашего api createWithName: Что вы ожидаете от этого, когда вы передаете имя nil. Должно ли это сбой приложения? Должна ли она заполняться пустой строкой? –

+0

Мне нужно убедиться, что параметр Необязательный не установлен. И когда он получает пустое имя в качестве параметра, недопустимый объект не создается и уведомляет invoker из createWithName :. Схема таблицы для ребенка не говорит, что поле имени должно быть не равным нулю, когда я проверяю базу данных, что меня смутило. –

Смежные вопросы