伴随着程序成长,测试变长,复杂性增加,如何更高效的写测试,对以后开发不会造成麻烦. 测试本身没发被测试,所以一定要清楚,可控.不要加循环,不要过于复杂的自动编程. Cost and Value 成本和价值. 测试有成本和价值 .因此要最小化成本,最大化价值. 什么是成本,什么是价值? 成本(time): 写测试的时间 每次运行测试花费的时间 理解测试所需要的时间 如果测试出错,搞定它并让程序ok的时间 有时候,改变程序代码带来的调整测试所花费的时间 价值(部分) 写测试的行为让它更容易的定义代码…
Set expectations 你不可能把一个老旧的代码野兽只用一晚就转变成优雅的奇迹marvel.你需要如下做法: 让自己有好的状态,用15分钟挥舞拳头诅咒之前的程序员 开始工作,这个codebase现在归你了. 如果你像我一样,立即搞定每件事并或增加测试给每件事的冲动十分强烈,那么休闲让这个感觉过去. 一上来就给遗产代码增加测试不是好注意,这里有2个原因: 第一个问题是,你接管这个遗产代码后你期望做点什么,而客户的想法未必和你一样.所以先和客户交流,或者和产品经理充分交流,确定需求后再开始…
Routes✅ Helper Methods✅ Controllers and Requests✅ Simulating Requests⚠️,看之前的博客 What to Expect in a Request Spec ✅ Older Rails Controller Tests ❌ Testing Mailers ❌ Testing Views and View Markup✅ Using Presenters ❌没看需要额外gem Testing Jobs and Cables 这些测试…
使用Capybara进行JS的集成测试 谈论驱动 让测试通过 Webpack in Development Mode Js设计 是用户在网页上有好的体验的重要因素. 尽管如此,许多网页不测试JS. 部分原因是js难以测试.交互和逻辑是依靠用户在网页上的交互动作,这就难了. Js框架也不支持简单的单元测试.同时工具变化也非常快.b本章使用的工具看起来有点老,如果你读的时候没有被彻底的antiquated废弃. 本章谈使用集成测试工具 Capybara来测试js,从客户端代码. 下章谈论单元测试JS…
Capybara:  A complete reference is available atrubydoc.info. 集成测试就是把局部的程序组合起来测试. 端到端测试是一个特殊的集成测试,覆盖了系统的全部行为, end-to-end. 接受测试acceptance test是用来指定正确行为,从客户或商业想法出发.Acceptance tests 通常在代码开始之前就计划或者写了. 集成测试也使用Javascript driver来评测基于Javascript的模仿用户行动. 本章是无Js…
Rails,model层包含业务逻辑和储存逻辑.其中储存逻辑被ActiveRecord处理. 在model中,不是每件事都必须是ActiveRecord对象.model layer可以包含各种服务,对象的值,或其他封装逻辑的类并使用ActiveRecord对象来储存. what can you do, 答案:type::model,没啥新东西,测试model✅ what makes a good Set of Model Tests?✅ Refactoring Models ✅ a Note o…
本章,你将扩大你的模型测试,测试整个Rails栈的逻辑(从请求到回复,使用端到端测试). 使用Capybara来帮助写end-to-end 测试. 好的测试风格,包括端到端测试,大量目标明确的单元测试,和相关的一些覆盖中间代码的测试. 开始写Rails Requirements-gathering,分析需求,是一整本书的内容.本节假设是写一个自用的小程序,因此无需military-grade precision. 列出非正式的需求单子: A user can enter a task, asso…
Web 安全是一个可怕的主题.所有的你的程序都依靠密码学,代码超出了你的控制. 尽管如此,你还是可以控制部分网页安全 --所有的logins和access checks和injection errors. 本章聚焦在user logins, roles, 和使用测试来确保基本的用户验证. User Authentication and Authorization 用户验证和授权✅ Adding Users and Roles✅ Restricting Access✅ More Access-Co…
对Js的单元测试是一个大的题目.作者认为Ruby的相关测试工具比Js的测试工具更灵活 大多数Js代码最终是关于响应用户的行为和改变DOM中的元素 没有什么javascript的知识点.前两节用了几个新的测试工具,和大量配置,暂时pass. setup js Unit-tests writing a Sample test Tdd in Js jasmine matchers testing ajax calls using testdouble.js connecting the js to t…
https://relishapp.com/rspec/rspec-mocks/v/3-7/docs/basics/test-doubles 你有一个问题,如果想为程序添加一个信用卡程序用于自己挣钱.测试信用卡函数很难.你不像在测试时,真来一个信用卡购买.而且网络远程调用很慢. 或者你有另一个问题.你想要使用模块设计来开发代码.你想要你的测试尽可能的和其他相关的部分的代码隔离开. 比如你有一个业务逻辑会调用一个model,但是你的测试不想用这个model,你想要你的workflow test有效…