如何解决Rails MiniTest after_create 回调
我正在试验 TDD 和 MiniTest。现在我想测试简单的 after_create
回调,这在 RSpec 中很容易,但我想用 MiniTest 就没有那么简单了。我有以下 User
和 Wallet
模型:
class User < ApplicationRecord
after_create :create_wallet
has_one :wallet,dependent: :destroy
end
class Wallet < ApplicationRecord
belongs_to :user
end
如何使用 MiniTest 测试 after_create
?我怀疑我是否应该这样做,但很好...我认为这是 TDD 的一部分。
解决方法
我认为您应该测试方法 :create_wallet
在创建用户后将被调用 only one time
。那么您肯定可以为方法 :create_wallet
本身创建另一个测试用例。
require "test_helper"
require "active_support/testing/method_call_assertions"
class UserTest < ActiveSupport::TestCase
include ActiveSupport::Testing::MethodCallAssertions
test "after create callback" do
user = User.new(...)
assert_called(user,:create_wallet,times: 1) do
user.save
end
end
test "create wallet" do
user = User.new(...)
assert_changes -> {user.wallet.blank?},from: true,to: false do
user.save
end
# or assert_equal
user = User.create(...)
assert_equal Wallet.last.user_id,user.id
assert_equal 1,Wallet.where(user_id: user.id).count
end
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。