如何对我的 Google OpenID 消费者应用程序进行单元测试?
我的网络应用程序是 Google OpenID 使用者(具有属性交换和 OAuth 扩展),我需要为其编写一些单元测试 [编辑:测试负责与 google 交互的单元]。
问题是默认的 OpenID 登录过程需要用户交互(输入用户/密码),这在单元测试中是不可能的。
您知道如何解决这个问题并对我的 OpenID 消费者应用程序进行单元测试吗?
(我不想运行自己的 OpenID 提供商。)
My web app is a Google OpenID consumer (with Attribute Exchange and OAuth Extension) and I need to write some unit test for it [edit: to test the unit that is responsible to interact with google].
The problem is that default OpenID login procedure needs user interaction (entering user/pass) which is not possible in unit test.
Do you have any idea how can I solve this problem and unit test my OpenID consumer app?
(I prefer not to run my own OpenID provider.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为此,您需要使用远程控制浏览器。 Selenium 就是为此用例而设计的。
(实际上它们被称为功能测试)。
在 Google 上搜索将 Selenium 测试集成到 Web 框架中的最佳方法。
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。
我还会编写几个单元测试,调用一个假的提供程序来测试代码在出现错误、连接问题和普通响应时的行为方式。
If I understand you want to test your all application and not just "unit test" it.
The actual test framework depends on the technology your application is using. For example there are many UI and web automation tools that can do what you want.
You should also unit test your core functionality or at least write several integration tests that work against an actual Openid provider but instead of running the entire application just test the functionality of the class (if you're using language that has classes) to make sure it can get the b.
I would also write a couple of unit tests that call a fake provider to test how your code behaves in case of error, connection problems and plain vanilla responses.