首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Rails中使用Rspec提高存根错误?

如何在Rails中使用Rspec提高存根错误?
EN

Stack Overflow用户
提问于 2013-02-18 18:19:53
回答 3查看 24.6K关注 0票数 18

我是Rails和Rspec的新手,我使用Rspec来测试这个控制器方法,其中包括异常处理:

代码语言:javascript
复制
def search_movies_director
  @current_movie = Movie.find(params[:id])
  begin
    @movies = Movie.find_movies_director(params[:id])
  rescue Movie::NoDirectorError
    flash[:warning] = "#{@current_movie} has no director info"
    redirect_to movies_path
  end
end

我不知道如何正确地测试该路径:在无效搜索(收到错误时)之后,它应该重定向到主页。我试过这样的方法:

代码语言:javascript
复制
describe MoviesController do
  describe 'Finding Movies With Same Director' do
    #some other code

    context 'after invalid search' do
      it 'should redirect to the homepage' do
        Movie.stub(:find)
        Movie.stub(:find_movies_director).and_raise(Movie::NoDirectorError)
        get :search_movies_director, {:id => '1'}
        response.should redirect_to movies_path
      end
    end

  end
end

运行测试后,出现错误:NameError: uninitialized constant Movie::NoDirectorError

如何在这个测试中伪造一个错误,以便它实际上检查是否发生重定向?

谢谢!

更新:

正如nzifnab所解释的那样,它无法定位Movie::NoDirectorError。我忘了定义这个异常类。所以我把它添加到app/models/movie.rb中:

代码语言:javascript
复制
class Movie < ActiveRecord::Base
  class Movie::NoDirectorError < StandardError ; end
  #some model methods
end

这解决了我的问题,这次考试通过了。

EN

Stack Overflow用户

发布于 2014-07-10 12:33:53

在Rails 4.1中:

verse_selector = double("VerseSelector", select_verses: ActiveRecord::RecordNotFound.new("Verses not found"))

verse_selector.select_verses现在将返回一个ActiveRecord::RecordNotFound

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14942828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档