Я новичок в программировании.Сейчас я тестирую свой products_controller с помощью rspecЭтот products_controller имеет много переменных экземпляра, и некоторые из них используют метод «где» для получения необходимых данных.
Я хотел бы знать, как тестировать код, используя «.where» и «.where.not» в контроллерах.
Может ли кто-нибудь мне помочь?
models / product.rb (извлеченная ассоциация)
belongs_to :category, optional: true
belongs_to :user
has_many :product_images
accepts_nested_attributes_for :product_images
products_controller.rb
def show
@product = Product.find(params[:id])
@images = @product.product_images.limit(4)
@products = @product.user.products.where.not(id: params[:id]).limit(6)
@category_products = Product.where(category_id:@product.category).where.not(id: params[:id]).limit(6)
@prev_item = @product.showPrevItem if @product.checkPrevItem
@next_item = @product.showNextItem if @product.checkNextItem
end
products_controller.spec.rb
FactoryBot.define do
factory :product do
name {'アメリカンイーグルのTシャツ'}
description {'買ったばっかり'}
category_id {'1'}
size {'M'}
product_status {'新品、未使用'}
delivery_fee {'着払い'}
local {'北海道'}
lead_time {'1~2日で発送'}
price {'300'}
transaction_status {'出品中'}
user
category
end
end
products_controller_spec.rb (не полностью)
require 'rails_helper'
describe ProductsController, type: :controller do
describe 'GET #show' do
it "renders the :show template" do
product = create(:product)
get :show, params: { id: product }
expect(response).to render_template :show
end
it "assigns the requested product to @product" do
product = create(:product)
get :show, params: {id:product}
expect(assigns(:product)).to eq product
end
it "populates an array of products" do
product = create(:product)
user = product.user
products = create_list(:product, 3)
end
end
end