gpt4 book ai didi

ruby-on-rails - 用于构建新操作的 rspec 匹配器

转载 作者:行者123 更新时间:2023-11-28 20:40:07 25 4
gpt4 key购买 nike

我如何/使用哪个匹配器测试 @product.industry_products.build 和其余部分是否在我的操作中定义?

产品 Controller

def new
@product = Product.new
authorize @product
@product.industry_products.build
@product.product_features.build
@product.product_usecases.build
@product.product_competitions.build
end

products_controller_spec.rb

context "GET new" do
let!(:profile) { create(:profile, user: @user) }
before(:each) do
get :new
end

it "assigns product" do
expect(assigns(:product)).to be_a_new(Product)
end

it { is_expected.to respond_with 200 }
it { is_expected.to render_template :new }
end

最佳答案

您可以使用模拟来检查您的代码中是否调用了某些方法:

expect_any_instance_of(Product).to receive_message_chain(:industry_products, :build).and_call_original
expect_any_instance_of(Product).to receive_message_chain(:product_features, :build).and_call_original

这些应该在调用 new 操作之前声明。

但是,在我看来,测试某些方法是否被调用在这个例子中并不是很有用,因为在您的 Controller 操作中没有条件逻辑。检查产品关联的存在可能是更可靠的测试。

关于ruby-on-rails - 用于构建新操作的 rspec 匹配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36822235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com