首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用MiniTest模拟一个类方法?

用MiniTest模拟一个类方法?
EN

Stack Overflow用户
提问于 2012-05-06 03:41:00
回答 2查看 7.7K关注 0票数 20

我使用的是MiniTest 2.12.1 ( Ruby >= 1.9附带的最新版本的常用测试框架),但我不知道如何用它模拟类方法,就像Mocha一样,例如:

代码语言:javascript
复制
product = Product.new
Product.expects(:find).with(1).returns(product)
assert_equal product, Product.find(1)

我已经涉足互联网好几天了,我仍然在寻找一个合理的答案。请帮帮忙?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-12 05:17:39

如果你坚持使用2.12.1,这可能对你没有帮助,但看起来他们在HEAD here的minitest/mock中添加了方法存根。

所以,如果你要更新到minitest,我认为你可以这样做:

代码语言:javascript
复制
product = Product.new
Product.stub(:find, product) do
  assert_equal product, Product.find(1)
end
票数 18
EN

Stack Overflow用户

发布于 2021-01-08 19:46:30

我所做的是简单地将类方法存根,并将其替换为我自己的lambda函数,这证明了原始函数已被调用。您还可以测试使用了哪些参数。

示例:

代码语言:javascript
复制
  test "unsubscribe user" do
    user = create(:user, password: "Secret1", email: "john@doe.com", confirmation_token: "token", newsletter_check: false)

    newsletter = create(:newsletter, name: "Learnlife News")
    unsubscribe_function = -> (email:) { @unsubscribed_email = email }

    Hubspot::Subscription.stub :unsubscribe_all, unsubscribe_function do
      get user_confirmation_en_path(confirmation_token: "token")
    end

    assert_equal @unsubscribed_email, "john@doe.com"
  end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10465350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档