Это - то, что я имею:
it "should be able to get a valid directory path" do
@asset.some_file_path.should == "/something/test.jpg"
end
Проблема состоит в том, что some_file_path возвращает "/not_here_yet.jpg", если нет никакого существующего файла.
def some_file_path
if File.exists(self.my_image_path)
return my_image_path
else
return "/not_here_yet.jpg
end
end
Я действительно не хочу создавать новый файл в своих тестах. Существует ли способ для меня фальсифицировать существование файла?
Я думаю что-то в строках:
it "should be able to get a valid directory path" do
AwesomeFakeFileCreator.create(@asset.my_image_path)
@asset.some_file_path.should == "/something/test.jpg"
end
Действительно ли это возможно? Как я могу сделать такую вещь?
Править: Я посмотрел немного на FakeFS, но я не уверен, что он отвечает на мой вопрос
Вы можете сделать что-то вроде
it "should be able to get a valid directory path" do
File.stub!(:exists?).and_return(true)
@asset.stub!(:my_image_path).and_return("/something/test.jpg")
@asset.some_file_path.should == "/something/test.jpg"
end
Возможно, вы можете подделать правильный путь к вашему файлу. Fake для каждого файла, к которому вы хотите вернуть путь
it "should be able to get a valid directory path" do
File.stub!(:exists?).with("my_image_path.jpg").and_return("my_image_path.jpg")
@asset.some_file_path.should == "my_image_path.jpg"
end
В случае отправки сообщения нескольким получателям может потребоваться избежать многократного копирования текста сообщения. Вот еще один вариант, который можно рассмотреть:
пользователи (user_id)
сообщения (message_id, sender_id, тема, body)
получил сообщения _ (message_id, user_id, address_mode, удален)
Эта модель может быть больше похожа на твиттер, чем на электронную почту, но может иметь некоторые преимущества.
Правила таковы:
Это некоторые из преимуществ:
Для большинства приложений, если вы используете оптимистичный уровень изоляции с вышеупомянутой моделью, у вас не должно быть проблем с производительностью, даже если вы ожидаете обмена сообщениями со скоростью несколько в секунду. Если, с другой стороны, вы ожидаете сотни или тысячи сообщений в секунду, то может оказаться целесообразным рассмотреть другие варианты.
-121--5044436-Мы используем эту архитектуру для наших приложений обработки для обработки различий, которые требуются нашим различным клиентам. Каждая DLL имеет схожую структуру и реализует один и тот же интерфейс и метод входа «Process ()». У нас есть XML-файл, который определяет, какой класс нужно загрузить на основе клиента и существуют ли дополнительные методы, помимо процесса, который необходимо вызвать. Производительность не должна быть проблемой до тех пор, пока количество транзакций не станет очень высоким.
-121--4320970-Это, вероятно, крайне бесполезный ответ, поскольку я только начинаю с автоматического тестирования, я сам, но:
Насколько я понимаю, вам нужно проверить только два условия: файл существует, а файл не существует?
Тестирование отсутствия достаточно просто: создать актив с my_image_path, который не существует
Конечно, вы можете проверить другой случай таким же образом? создать пустой файл с расширением .jpg, затем указать на него актив и проверить, возвращает ли функция правильное имя?