Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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 Cucumber可以提示输入吗?_Ruby On Rails_Ruby_Mocking_Cucumber_Bdd - Fatal编程技术网

Ruby on rails Cucumber可以提示输入吗?

Ruby on rails Cucumber可以提示输入吗?,ruby-on-rails,ruby,mocking,cucumber,bdd,Ruby On Rails,Ruby,Mocking,Cucumber,Bdd,运行Cucumber功能时是否可以提示用户输入 例如,我在Rails应用程序中添加了一个用于用户身份验证的功能,但由于身份验证将通过外部服务进行,因此我无法为测试目的设置虚拟帐户 我最初的计划是简单地提示用户在测试期间使用用户名和密码,但Cucumber似乎不喜欢在步骤定义中这样做 我知道这会使自动化测试变得更加困难,但我不确定如何包括此身份验证功能。有没有一种方法可以获取用户输入,或者有没有另一种方法可以更好地使用mock?或者,是否有方法在运行时传递任意参数以在步骤定义中使用?我不确定是否要

运行Cucumber功能时是否可以提示用户输入

例如,我在Rails应用程序中添加了一个用于用户身份验证的功能,但由于身份验证将通过外部服务进行,因此我无法为测试目的设置虚拟帐户

我最初的计划是简单地提示用户在测试期间使用用户名和密码,但Cucumber似乎不喜欢在步骤定义中这样做


我知道这会使自动化测试变得更加困难,但我不确定如何包括此身份验证功能。有没有一种方法可以获取用户输入,或者有没有另一种方法可以更好地使用mock?或者,是否有方法在运行时传递任意参数以在步骤定义中使用?

我不确定是否要使用mock,但如果您需要特定于环境的用户帐户进行测试,您应该使用环境变量:

$ SOME_USERNAME=foo SOME_PASSWORD=bar rake test:features
然后在代码中:

foo = MyAwesomeFooClass.new(ENV["SOME_USERNAME"], ENV["SOME_PASSWORD"])

编辑:现在我想起来了,您几乎肯定不会在测试中遇到真正的API

> P>我会考虑使用VCR GEM记录与外部服务的交互,并将其回放给后续的测试运行:


这是一个有趣的方法。如果环境变量不存在,您可能会使测试失败。实际上,我目前正在开发一个gem,它使管理ENV变量变得更容易。(在开发的早期)啊,你的编辑很有意思。有趣的部分是找出如何模拟它…@bloudermilk如果密码特别敏感,并且您不希望它出现在您的环境中,您会怎么做?如果我使用的是纯HTTP API,那就太好了-我很可能会使用LDAP身份验证。我不想仅仅为了规范而被束缚在授权技术上。此外,它还需要存储我的凭据,这在本例中是不可接受的。