Подтвердить что ты не робот

Тестирование RSpec send_file

Как проверить действие контроллера, которое отправляет файл?

Если я делаю это с тегом controller.should_receive(:send_file) с ошибкой "Отсутствует шаблон", потому что ничего не получается.

4b9b3361

Ответ 1

Из Googling вокруг, кажется, что render также будет вызываться в какой-то момент.. но без шаблона вызовет ошибку.

Решение, похоже, также должно заглушить:

controller.stub!(:render)

Ответ 2

Другой способ работы:

controller.should_receive(:send_file).and_return{controller.render :nothing => true}

Для меня это фиксирует тот факт, что предполагаемый побочный эффект send_file заключается в том, чтобы ничего не было сделано. (Хотя, по общему признанию, кажется немного неудобным, чтобы заставить заглушку вызвать метод на исходном объекте.)

Ответ 3

Вы также можете сделать это:

result = get ....

result.body.should eq IO.binread(path_to_file)