ruby-on-rails - 为什么 RSpec/Capybara 使用 public_send 提供的连字符值抛出错误?
问题描述
我有一个共享示例,用于在多个控制器上测试相同的内容。我将模型和字段列表传递给控制器以检查以确保它们在页面上,但是当值是连字符字符串时,它会引发错误,即使值在页面上也是如此。不过,奇怪的是,它在支票上去掉了连字符。所以,如果用户表中的姓氏字段有“Johnson-Smith”这就是我得到的......
expected to find text matching "Johnson Smith" in...
在它呈现的页面文本中向下看,我可以清楚地看到“Johnson-Smith”。我不明白为什么 Rspec/Capybara 不检查正确的值。这是共享的示例代码..
RSpec.shared_examples 'renders proper fields' do |klass, fields|
it 'should render the expected text' do
model_object = klass.order(:created_at).last
fields&.each do |field|
expect(page).to have_text(model_object.public_send(field))
end
end
end
编辑我测试了每个被评估的 public_send(field) 的结果,结果表明 public_send 正在按预期从数据库中返回字段。所以问题是,出于某种原因,Capybara 在没有连字符的情况下对其进行评估,即使它通过了带有连字符的文本。
解决方案
推荐阅读
- python - 将图像存储在 numpy 数组中以使用 Keras 构建 CNN 的最佳方法是什么?
- javascript - 如果在名为“js”的文件夹中,代码不会运行?
- go - Google Cloud KMS App Engine 加密不起作用
- r - 使用泊松回归进行预测
- image - Keras:使用“输入”层时出现“Found: Tensor("input_1:0", shape=(None, 256, 256, 2), dtype=float32)" 错误
- c# - 通过 HTML BeginForm 传递列表和模型实例
- html - 协助创建 HTTP POST
- ios - 拖放在 macOS 上不起作用,但在 iOS 上起作用(使用 Catalyst)
- javascript - 无法通过模拟器运行 React-Native 应用程序
- javascript - React - 提交表单时显示新组件