Rails中测试broadcasts_refreshes断言失败,如何解决?
问题:能否在ActiveJob或模型测试中测试broadcasts_refreshes?
能否在ActiveJob测试或模型测试中测试broadcasts_refreshes?或者是否有其他合适的测试位置?
根据Broadcastable文档(重点为提问者自加):
broadcasts_refreshes配置模型向运行时通过stream符号调用生成的流名广播「页面刷新」信号
ActionCable测试工具均要求指定流名,但未说明如何获取生成的流名,查看Broadcastable源码后发现,broadcasts_refreshes当前使用model_name.plural生成流名。
随后尝试使用assert_broadcasts(stream, number, &block)方法,传入model_name.plural的字符串结果(场景中为"salesforce_contacts"),但两种测试场景下均失败,提示:
1 broadcasts to salesforce_contacts expected, but 0 were sent.
后台任务测试代码
# Testing the background job require "test_helper" class UpdateSFContactJobTest < ActiveJob::TestCase include ActionCable::TestHelper test "broadcasts refresh message on change" do contact = salesforce_contacts(:one) assert_broadcasts(contact.model_name.plural, 1) do UpdateSFContactJob.perform_now(contact) end #Assertion fails: 1 broadcasts to salesforce_contacts expected, but 0 were sent. end end
模型测试代码
# Testing the model require "test_helper" class Salesforce::ContactTest < ActiveSupport::TestCase include ActionCable::TestHelper test "broadcasts refresh after change" do contact = salesforce_contacts(:one) assert_broadcasts(contact.model_name.plural, 1) do contact.save end #Assertion fails: 1 broadcasts to salesforce_contacts expected, but 0 were sent. end end
模型代码摘要
class Salesforce::Contact < ApplicationRecord include Mappable belongs_to :user broadcasts_refreshes permit_unexpected_attributes has_attribute_mappings Id: :salesforce_id, AccountId: :account_id, npsp__Deceased__c: :deceased, Name: :combined_name #snip end
内容的提问来源于stack exchange,提问作者Matthew
相关产品推荐
相关产品推荐

