gpt4 book ai didi

ruby - Mocha 预计最多一次,调用两次,但方法显然只调用一次

转载 作者:行者123 更新时间:2023-11-28 21:32:10 26 4
gpt4 key购买 nike

我正在使用 Mocha 进行模拟测试。下面是相关代码:

# test_player.rb
should "not download the ppg more than once for a given year" do
@durant.expects(:fetch_points_per_game).at_most_once
ppg = @durant.points_per_game
ppg2= @durant.points_per_game
assert_equal ppg, ppg2, "A player should have a points per game"
end

# player.rb
class Player
# ...

def points_per_game(year=Date.today.year)
@points_per_game ||= fetch_points_per_game(year)
end
alias_method :ppg, :points_per_game

private

def fetch_points_per_game(year=Date.today.year)
31.2
end
end

测试失败,提示有“意外调用:#.fetch_points_per_game(any_parameters)”

我对我的代码的理解是,如果@point_per_game 为零,将调用 fetch_points_per_game,否则,将缓存结果以供将来调用 points_per_game。那么为什么测试会提示 fetch_points_per_game 被调用了两次?

最佳答案

在您的预期中,您没有指定返回值,因此 stub 调用返回 nil。这就是它被第二次调用的原因。如果您将期望更改为:

@durant.expects(:fetch_points_per_game).at_most_once.returns(1.23)

您应该发现测试现在通过了。

关于ruby - Mocha 预计最多一次,调用两次,但方法显然只调用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16328054/

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