Cucumber 单点登录页面的集成测试
您如何使用单点登录(SSO)登录测试页面(例如使用caybara或cucumber)?对于普通登录,您将编写一个访问登录页面、填写表单并提交表单的方法。如果登录表单来自Shibboleth或OpenAM/OpenSSO等外部SSO服务器,则这有点困难。如何为受SSO保护的页面编写集成测试Cucumber 单点登录页面的集成测试,cucumber,integration-testing,single-sign-on,capybara,opensso,Cucumber,Integration Testing,Single Sign On,Capybara,Opensso,您如何使用单点登录(SSO)登录测试页面(例如使用caybara或cucumber)?对于普通登录,您将编写一个访问登录页面、填写表单并提交表单的方法。如果登录表单来自Shibboleth或OpenAM/OpenSSO等外部SSO服务器,则这有点困难。如何为受SSO保护的页面编写集成测试 类似的问题是使用单独的搜索服务器(Solr或Sphinx)进行集成测试。您可能会通过使用某种形式的模拟或存根来解决它。有人能举一个很好的例子,如何为cucumber或capybara模拟或存根SSO吗?如果这太
类似的问题是使用单独的搜索服务器(Solr或Sphinx)进行集成测试。您可能会通过使用某种形式的模拟或存根来解决它。有人能举一个很好的例子,如何为cucumber或capybara模拟或存根SSO吗?如果这太困难,那么搜索服务器的类似示例也会有所帮助。SSO应用程序的集成测试 更一般问题的特例:测试 分布式应用程序。这是一个困难的问题 这个问题似乎并没有什么魔力 子弹。有多种方法可以组合 一组不同的服务器或服务,并对其进行测试 作为一个整体。两个极端是 a) 测试整个系统的一个实例。你不知道 需要任何模拟或存根,但你需要 整个堆栈的完整、成熟的设置。这包括 所涉及的每台服务器的运行实例。 对于每个测试,设置整个应用程序堆栈, 并测试整个堆栈,即测试 整个分布式系统作为一个整体,包括所有 涉及的组件,这是很困难的 一般来说这整件事只有在每个 组件和所有连接工作正常 b) 为每个组件编写一个集成测试, 将其视为一个黑匣子,并覆盖 模拟和存根缺少连接。 在实践中,这种方法更常见于 单元测试,一个为每个单元编写测试 MVC层:模型、视图和控制器 (视图和控制器经常在一起) 在这两种情况下,您都没有考虑 断开的连接。原则一 必须检查每个外部服务器/服务 下列可能性
- 下跌
- 他起床了,行为良好
- 他站起来回答错了
- 已启动,但您发送了错误的数据
- 一台数据库服务器,带多个数据库(开发和测试)
- 一个具有多个索引的搜索服务器(开发和测试)
before :each do
@current_user = Factory(:user)
controller.stub!(:current_user).and_return(@current_user)
controller.stub!(:logged_in?).and_return(:true)
end
它也适用于帮助器和视图测试,但是
不适用于RSpec请求或集成测试
对于黄瓜测试,可以使用树桩
通过替换连接退出搜索服务器
到带有存根的搜索服务器(用于太阳黑子和
Solr这可以通过,
它封装了到Solr的连接)
这一切听起来都很好,不幸的是这有点难以理解
为SSO服务器传输此解决方案。典型的极小值
安装程序将是App Server+DB Server+SSO Server。
完整的集成测试意味着我们必须使用
多用户数据存储(开发和测试)。
设置SSO服务器已经够难了,
使用多用户数据设置SSO服务器
商店可能不是个好主意
解决这个问题的一个可能办法是在
方向。FakeWeb是一个Ruby库,由
布莱恩·库克伪造网络请求。它可以让你解耦
您的测试环境来自live services。假装回答
不幸的是,SSO服务器的配置有点困难
我最后使用的另一个可能的解决方案是使用。
添加可在集成中调用的假登录方法
测试。此假登录是一种动态方法,仅在登录过程中添加
测试(通过猴子修补的形式)。这有点乱,但是
它似乎起作用了