gpt4 book ai didi

ruby-on-rails - 使用 RSpec 测试该方法是否具有参数的默认值

转载 作者:行者123 更新时间:2023-12-04 05:59:09 26 4
gpt4 key购买 nike

如果未提供参数,如何测试采用参数的方法是否使用默认值?

示例

# this method shouldn't error out
# if `Post.page_results` without a parameter
class Post
def self.page_results(page=1)
page_size = 10
start = (page - 1) * page_size
finish = start + page_size
return Page.all[start..finish]
end
end

我如何检查 rspec page等于 1如果 page_results无参数调用?

最佳答案

测试表明 page param 设置了默认值,很可能不是您应该测试的。在大多数情况下,最好测试行为而不是实现( Talk from Sandy Metz about testing )。在您的情况下,您应该测试预期的 Pages 集是否返回,当 page_results在没有参数的情况下调用(默认情况)。

以下是如何执行此操作的示例:

describe Post do
describe ".page_results" do
context "when Pages exist" do
subject(:pages) { described_class.page_results(page) }

let(:expected_pages_default) { expected_pages_page_1 }
let(:expected_pages_page_1) { Page.all[0..10] }
let(:expected_pages_page_2) { Page.all[10..20] }

before do
# Create Pages
end

context "when no page param is give " do
# HINT: You need to redefine subject in this case. Setting page to nil would be wrong
subject(:pages) { described_class.page_results }

it { expect(pages).to eq expected_pages_default }
end

context "when the page param is 1" do
let(:page) { 1 }

it { expect(pages).to eq expected_pages_page_1 }
end

context "when the page param is 2" do
let(:page) { 2 }

it { expect(pages).to eq expected_pages_page_2 }
end
end

context "when no Pages exist" do
# ...
end
end
end

关于ruby-on-rails - 使用 RSpec 测试该方法是否具有参数的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16852236/

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