网站大量收购独家精品文档,联系QQ:2885784924

Golang Web开发之Revel测试.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Golang Web开发之Revel测试

Golang Web开发之Revel测试 Revel提供了一个测试框架,这使得在应用程序中写和运行测试函数变得很容易. skeleton应用程序带有一个简单的测试来帮助我们测试. 概要 测试保存在tests目录 1. corp/myapp ? 2. ????app/ ? 3. ????conf/ ? 4. ????public/ ? 5. ????tests/????? 一个简单的测试看起来像下面这样: 1. type?ApplicationTest?struct?{ ? 2. ??rev.TestSuite ? 3. } ? 4. ? 5. func?(t?ApplicationTest)?Before()?{ ? 6. ????println(Set?up) ? 7. } ? 8. ? 9. func?(t?ApplicationTest)?TestThatIndexPageWorks()?{ ? 10. ????t.Get(/) ? 11. ????t.AssertOk() ? 12. ????t.AssertContentType(text/html) ? 13. } ? 14. ? 15. func?(t?ApplicationTest)?After()?{ ? 16. ????println(Tear?down) ? 17. }? 上面的示例代码展示了几件事: ? 一个测试工具是任意嵌入rev.TestSuite的struct ? 如果存在 Before() 和 After() 方法, 它们将在每一个测试方法的前后被调用 ? rev.TestSuite 为发布请求到应用程序和断言响应信息提供帮助 ? 一个断言失败产生一个panic, 它将被harness捕获 你可以已两种方式运行测试: ? 交互式的, 从你的浏览器运行在测试部署时很有帮助 ? 非交互式的, 从命令行运行对结合一个持续集成很有帮助 开发一个测试工具 创建一个你自己的测试工具, 定义一个嵌入 rev.Testsuite的struct, 它提供一个HTTP客户端和许多帮助方法来发出请求到你的应用程序. 1. type?TestSuite?struct?{ ? 2. ????Client???????*http.Client ? 3. ????Response?????*http.Response ? 4. ????ResponseBody?[]byte? 5. } ? 6. ? 7. //?Some?request?methods ? 8. func?(t?*TestSuite)?Get(path?string) ? 9. func?(t?*TestSuite)?Post(path?string,?contentType?string,?reader?io.Reader)? ? 10. func?(t?*TestSuite)?PostForm(path?string,?data?url.Values)? ? 11. func?(t?*TestSuite)?MakeRequest(req?*http.Request) ? 12. ? 13. //?Some?assertion?methods ? 14. func?(t?*TestSuite)?AssertOk() ? 15. func?(t?*TestSuite)?AssertContentType(contentType?string) ? 16. func?(t?*TestSuite)?Assert(exp?bool) ? 17. func?(t?*TestSuite)?Assertf(exp?bool,?formatStr?string,?args?...interface{})? 全部的请求方法表现相似: 1. 它们接收一个路径(例如: /users/) 2. 它们发出请求到应用程序服务器 3. 它们把响应存储了Response属性中 4. 它们读取全部的响应body到ResponseBody属性 如果开发人员希望使用自定义的HTTP Client代替默认的?http.DefaultClient, 它们应该在Before()方法里面替换它. 如果它们没有满足条件全部断言都将产生一个panic. 全部的panic被测试harness捕获并展示为错误. 运行一个测试工具 为了运行任何测试, testrunner模块必须被激活. 添加下面一行代码到 app.conf 以保证激活它 1. module.testrunner?=?/robfig/revel/modules/testrunner? 完成上面之后测试就被运行了(交互式或非交互式) 运行交互式的测试 利用Revel的热编译功能

文档评论(0)

tiangou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档