Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 使用Cucumber建模文件导入_Ruby On Rails 4_Cucumber - Fatal编程技术网

Ruby on rails 4 使用Cucumber建模文件导入

Ruby on rails 4 使用Cucumber建模文件导入,ruby-on-rails-4,cucumber,Ruby On Rails 4,Cucumber,我正在开发一个可以处理用户准备的文本文件的应用程序,我正在尝试将BDD与Cucumber一起使用 显然,我可以生成一堆示例文件并编写如下场景: When I import file_1 Then I see [some data on the screen] 等等,但这些示例文件是否算作测试夹具?看起来很丑,即使我给他们起了更有意义的名字,也不能真正传达场景的实质内容 是否有更清晰、更具表现力的解决方案来处理Cucumber的文件输入?这看起来是使用场景大纲的好地方 与其专注于如何导入文件,不

我正在开发一个可以处理用户准备的文本文件的应用程序,我正在尝试将BDD与Cucumber一起使用

显然,我可以生成一堆示例文件并编写如下场景:

When I import file_1
Then I see [some data on the screen]
等等,但这些示例文件是否算作测试夹具?看起来很丑,即使我给他们起了更有意义的名字,也不能真正传达场景的实质内容


是否有更清晰、更具表现力的解决方案来处理Cucumber的文件输入?

这看起来是使用场景大纲的好地方


与其专注于如何导入文件,不如专注于使用该功能来说明为什么要这样做。那么,为什么您的用户提供这些数据,以及他们通过要求您处理这些数据试图实现什么目的呢

通常,特征中出现的操作机制是气味,例如

Smelly
  When I fill in my password with '123456'
  And I fill in my username with 'frank'

Fragrant
  When I sign in

这对清晰度和表现力没有任何作用,是吗?看到该规范的人无法说出导致特定响应的文件是什么,特别是为什么该文件可能被拒绝。例如:当我加载一个有效文件和当我加载一个无效文件时,将文件可能无效的所有方式推到RSpec示例中?对于快乐路径,可以,但是如何指定失败响应?我仍然会得到这样的结果:当我加载一个第3行中包含无效用户名的文件时,我会收到一条错误消息“第3行中的用户名无效”Yuk!但除此之外,我如何指定错误消息正确显示发生错误的行?这当然是我需要测试的东西,因为一个接一个的错误已经成熟了。这仍然是关于你如何做事情,而不是为什么,所以还没有足够的背景来理解这个问题。我可以说的是,对于Cucumber的场景,您不应该进行激励性测试。这意味着您将测试很少的sad路径,可能只有一条,您只需测试您是否看到错误,而不指定错误是什么。如果你想做更多的鼓励性测试,那么你应该为进行文件处理的类/方法编写单元测试。情况是,我们会定期收到应用程序执行任务所需的大量数据,因此需要将其上载到应用程序。因此,请展开讨论,讨论谁在发送数据以及为什么,谁在接收数据,以及他们预期会发生什么。然后你会有一些背景知识。在集成层,您只想显示,如果出现问题,您会收到一条错误消息。您可以在单元测试中处理诸如“逐个错误”之类的细节。
Smelly
  When I fill in my password with '123456'
  And I fill in my username with 'frank'

Fragrant
  When I sign in