我的网络应用程序是一个谷歌 OpenID 消费者(带有属性交换和 OAuth 扩展),我需要为它编写一些单元测试[编辑:测试负责与谷歌交互的单元]。
问题是默认的 OpenID 登录过程需要用户交互(输入用户/密码),这在单元测试中是不可能的。
您知道如何解决这个问题并对我的 OpenID 消费者应用程序进行单元测试吗?
(我不想运行我自己的 OpenID 提供程序。)
我的网络应用程序是一个谷歌 OpenID 消费者(带有属性交换和 OAuth 扩展),我需要为它编写一些单元测试[编辑:测试负责与谷歌交互的单元]。
问题是默认的 OpenID 登录过程需要用户交互(输入用户/密码),这在单元测试中是不可能的。
您知道如何解决这个问题并对我的 OpenID 消费者应用程序进行单元测试吗?
(我不想运行我自己的 OpenID 提供程序。)
You need to use a remote controlled browser for this. Selenium was made for this use case.
(indeed they are called functional tests then).
Search on Google for the best way to integrate selenium tests into your web framework.
如果我了解您想要测试您的所有应用程序,而不仅仅是“单元测试”它。实际的测试框架取决于您的应用程序使用的技术。例如,有许多 UI 和 Web 自动化工具可以满足您的需求。
您还应该对您的核心功能进行单元测试,或者至少编写几个针对实际 Openid 提供程序的集成测试,而不是运行整个应用程序,只需测试类的功能(如果您使用的是具有类的语言)以确保它可以得到b。我还会编写一些单元测试,它们调用一个虚假的提供程序来测试你的代码在出现错误、连接问题和普通响应时的行为。