![]() |
1
19
模拟在黄瓜场景中很糟糕-它们几乎是一种反模式。 我的建议是编写一个实际登录用户的步骤。我这样做
我知道实例变量
有时我叫它
|
![]() |
2
25
我再重复一遍丹皮克特的话,他说只要有可能,就应该避免用黄瓜做模拟。但是,如果您的应用程序没有登录页面,或者性能有问题,那么可能需要直接模拟登录。 这是一个丑陋的黑客,但它应该完成工作。
|
![]() |
3
17
重新。Ryan的解决方案-您可以在env.rb文件中打开actioncontroller并将其放在那里,以避免将其放入生产代码库(感谢John@Pivotal实验室)
|
![]() |
4
5
我不知道这和最初的问题有多大关系,但我还是决定本着讨论的精神发表… 我们有一个黄瓜测试套件,运行需要10分钟,所以我们想做一些优化。在我们的应用程序中,登录过程会触发许多与大多数场景无关的额外功能,因此我们希望通过直接设置会话用户ID来跳过这些功能。 上面的Ryanb方法很好地工作,只是我们无法使用该方法退出。这使得我们的多用户故事失败了。 我们最终创建了一个只在测试环境中启用的“快速登录”路由:
下面是创建会话变量的相应操作:
对于我们来说,这比使用cookies数组简单。作为额外的好处,这种方法也适用于硒/watir。 缺点是我们在应用程序中包含了与测试相关的代码。就个人而言,我不认为添加代码使应用程序更具可测试性是一个巨大的罪恶,即使它确实增加了一些混乱。也许最大的问题是未来的测试作者需要找出他们应该使用哪种类型的登录。有了无限制的硬件性能,我们显然不会这么做。 |
![]() |
5
4
回复:Ryan的解决方案: 不适用于水豚,除非进行了小的适应:
(在这里找到: https://gist.github.com/484787 ) |
![]() |
6
3
我的理解是你得到:
在请求被实例化之前访问会话[]时。在你的情况下,我想如果你把webrats
现在,不幸的是,会话似乎没有跨步骤持续(至少,我找不到方法),所以这一点信息没有帮助回答您的问题:)
所以,我想,Ryan的
|
![]() |
7
2
我使用一个只测试的登录解决方案,比如 Prikka's 但我在机架中完成了这一切,而不是创建一个新的控制器和路由。
|
![]() |
8
2
@Ajedi32我遇到了同样的问题(capybara::racktest::driver的未定义方法“current_session”),并将其放入步骤定义中,为我解决了问题:
在我的控制器操作中,我引用了cookies[:stub_user_id],而不是cookie_jar[:stub_user_id] |
![]() |
9
1
你为什么不把工厂女工或(修理工或制造工)用在设计(或权威)和 SentientUser ?然后您可以简单地嗅探哪个用户已经登录!
|
![]() |
10
0
另一个微小的变化:
|
![]() |
11
0
经过大量的灵魂探索和网上冲浪,我最终选择了一个非常简单和明显的解决方案。 使用cookie会增加两个问题。首先,您在特定于测试的应用程序中有代码,第二个问题是,在使用机架测试以外的任何东西时,在Cucumber中创建cookie都很困难。对于cookie问题,有各种各样的解决方案,但是所有的都有点挑战性,一些介绍了mock,所有的都是我所说的“棘手的”。一个这样的解决方案是 here . 我的解决方案如下。这使用的是HTTP基本身份验证,但大多数情况下都可以通用。
test-authenticate做任何正常的authenticate所做的事情,除了绕过任何耗时的部分。在我的例子中,真正的身份验证是使用LDAP,我想避免使用LDAP。 是的,它有点粗俗,但它是清晰、简单和明显的。我看到的其他解决方案都不是更干净更清晰。 注意,一个特性是,如果用户名不是“testuser”,则采用常规路径,以便对其进行测试。 希望这能帮助别人… |
![]() |
Tim Kirkwood · 比较空数据帧 7 月前 |
![]() |
nerrood · 为什么在笑话测试中不调用save 1 年前 |
![]() |
eof · Chrome块文件下载-selenium 1 年前 |
![]() |
Display name · Ember.js辛烷值验收试验 1 年前 |
![]() |
Vitto · 理智和回归测试是如何在一个简单的场景中协同工作的? 1 年前 |
![]() |
mattsmith5 · 使用特征文件并行计算空手道跑场景 1 年前 |
![]() |
Norronas · 采用裸机编程的寄存器单元测试 1 年前 |