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

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

29 голосов
/ 15 января 2011

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

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

Ответы [ 3 ]

34 голосов
/ 15 января 2011

С Поиск в Google вокруг , кажется, что render также будет вызван в некоторый момент ... но без шаблона, вызовет ошибку.Решение, кажется, состоит в том, чтобы заглушить это также:

controller.stub!(:render)
25 голосов
/ 07 декабря 2011

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

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

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

7 голосов
/ 06 июля 2013

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

result = get ....

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