我已经搜索了很多,看看是否有解决这个问题的方法,我还没有看到任何人报告这个问题,让我补充一下,我是一个rails新手。
Ruby版本:3.2.2 Rails版本:7.0.5.1 Rspec Rails版本:6.0.0
控制器:
def index
books = Book.all.limit(limit).offset(get_books_params[:offset])
render json: BooksRepresenter.new(books).as_json
end
字符串
测试:
RSpec.describe Api::V1::BooksController, type: :controller do
it 'has a max limit of 100' do
expect(Book).to receive(:limit).exactly(1).times.with(100).and_call_original
get :index, params: { limit: 999 }
end
end
型
测试输出:
Failure/Error: expect(Book).to receive(:limit).exactly(1).times.with(100).and_call_original
(Book(id: integer, title: string, created_at: datetime, updated_at: datetime, author_id: integer) (class)).limit(100)
expected: 1 time with arguments: (100)
received: 0 times
型
因此,从我所看到的情况来看,测试期望调用来自Book
,但是因为Book.all
在.limit
之前被调用,所以似乎期望没有识别.limit
被调用。
任何帮助/解释将不胜感激
1条答案
按热度按时间az31mfrm1#
这里不需要所有
只需做
books = Book.limit(limit).offset(get_books_params[:offset])
删除所有然后做
字符串