Ruby中没有将HTTParty::Response隐式转换为字符串(TypeError)

b5lpy0ml  于 2023-01-12  发布在  Ruby
关注(0)|答案(1)|浏览(95)

我正在创建一个用户,然后查询。但是当我在查询中传递id时,我得到了这个错误。这是没有发生的。

my class
  class Crud

include HTTParty
base_uri 'http://dummy.restapiexample.com/api/v1'

def create 
    nome = Faker::UniqueGenerator.clear
    nome = Faker::Name.unique.first_name
    salario = Faker::Number.number(digits: 2)
    idade   = Faker::Number.number(digits: 2)
    $body = {name: nome, salary: salario, age: idade }.to_json
  
  $headers = {
    'Accept' => 'application/vnd.tasksmanager.v2',
    'Content-Type' => 'application/json'
  }

  self.class.post('/create', body: $body, headers: $headers) 
end

def retrieve(id)
  self.class.get("/employee/#{ id }")
 
 
  $response = @manter_user.create
  expect(@manter_user.create.code).to eq (200)
  puts $response.body
  @id = JSON.parse($response)['id']
kokeuurv

kokeuurv1#

靶区; DR

由于没有提供HTML、CSS、JavaScript和模型/控制器的源代码,所以很难猜出真正的问题是什么,但是,您已经提供了足够的信息,表明您正在进行这组测试,并且最好重构测试,或者修改登录实现或用户界面,使其更具可测试性。

  • 注意:这是一个很好的例子,说明了为什么测试优先开发是有用的。在现有代码上改进测试比确保从一开始就具备可测试性要困难得多! *

验证内容和验证位置

这不是一个真正的Cucumber大纲问题。这个问题很可能与您的测试步骤或底层UI问题有关。如果验证是在服务器端进行的,那么您很可能没有使用唯一的CSS ID或其他与您的Flash消息相关的一致且易于查找的信息。或者,如果您在JavaScript中执行验证并操作DOM插入错误消息,那么您没有正确地驱动Web页面。
此外,UI本身并不是测试有效或无效登录以外的任何东西的理想场所。如果您想知道 * 为什么 * 登录是无效的,出于安全原因,如果你想知道为什么一个给定的登录失败,你通常想在模型或控制器测试中做更细粒度的测试。2你不应该返回像"不正确的密码"或"无效的用户名"这样的信息(与"无效登录"相对),它会泄漏有关给定帐户是否存在的信息。
此外,email * validation * 通常是在浪费时间,虽然有一些非常复杂的正则表达式可以使用,比如Perl regex for RFC 822 addresses,但是email地址从来没有被设计成符合正则表达式的模式,而且,大多数人对email validation的实现都很糟糕。并且幼稚的验证通常不会接受完全有效的电子邮件地址,例如加号地址或qmail样式的破折号扩展名。即使输入一个与RFC822、RFC5822或您试图验证的任何RFC匹配的"有效"电子邮件地址,也无法实际验证它是否是一封"可交付"电子邮件。
鉴于上述情况,在允许点击登录按钮之前,你最好验证这两个字段是否都为非空。这似乎是你想要做的主要检查。否则,只需检查页面是否有flash提供的不变的"无效登录"文本,或者在文本输入或验证登录时用于操作DOM的任何东西。

相关问题