You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby中拼接两个姓名字段变量时缺少空格导致校验失败如何解决?

问题根因

  • 姓氏输入框重复调用2次Faker::Name.last_name输入,第二次输入会在原有内容后追加新姓氏,你存入@take_last_name的是第二次生成的姓氏,和输入框实际填入的完整内容不符
  • 拼接名、姓变量时未在中间插入空格,和登录区「名+空格+姓」的展示格式不匹配,直接导致断言失败
  • 部分测试框架中send_keys方法返回的是元素对象而非输入后的文本值,直接链式调用.value可能出现取值不符合预期的问题

修复方案

标准修复代码

# 先生成随机值再填入输入框,避免重复调用faker生成不一致的内容
@take_first_name = Faker::Name.first_name
input_first_name.send_keys(@take_first_name)
# 输入完成后单独取值,兼容性更强
@take_first_name = input_first_name.value

@take_last_name = Faker::Name.last_name
input_last_name.send_keys(@take_last_name)
@take_last_name = input_last_name.value

def logged_area
  # 拼接时中间插入空格,匹配页面展示格式
  expected_full_name = "#{@take_first_name} #{@take_last_name}"
  pp expected_full_name
  actual_full_name = view_user.text
  expect(actual_full_name).to eql(expected_full_name)
end

兼容优化方案

如果页面姓名中间可能出现多个空格、或者存在前后冗余空格,可以用正则匹配兼容格式差异,不用严格对齐空格数量:

def logged_area
  actual_full_name = view_user.text.strip
  expect(actual_full_name).to match(/^#{Regexp.escape(@take_first_name)}\s+#{Regexp.escape(@take_last_name)}$/)
end

内容的提问来源于stack exchange,提问作者Tadeu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:24:03