Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
unit tests in ruby
Search
SiweiShen
January 03, 2013
Technology
1
91
unit tests in ruby
introduced how to write basic unit tests and how to fasten the execution speed.
SiweiShen
January 03, 2013
Tweet
Share
More Decks by SiweiShen
See All by SiweiShen
Ruby introduction to QA people
sg552sg552
1
63
ruby introduction ( Chinese)
sg552sg552
1
65
meta programming ruby
sg552sg552
5
230
Other Decks in Technology
See All in Technology
TechLION vol.41~MySQLユーザ会のほうから来ました / techlion41_mysql
sakaik
0
180
Observability в PHP без боли. Олег Мифле, тимлид Altenar
lamodatech
0
350
Uniadex__公開版_20250617-AIxIoTビジネス共創ラボ_ツナガルチカラ_.pdf
iotcomjpadmin
0
160
AWS Summit Japan 2025 Community Stage - App workflow automation by AWS Step Functions
matsuihidetoshi
1
260
MySQL5.6から8.4へ 戦いの記録
kyoshidaxx
1
210
PHPでWebブラウザのレンダリングエンジンを実装する
dip_tech
PRO
0
200
より良いプロダクトの開発を目指して - 情報を中心としたプロダクト開発 #phpcon #phpcon2025
bengo4com
1
3.1k
低レイヤを知りたいPHPerのためのCコンパイラ作成入門 完全版 / Building a C Compiler for PHPers Who Want to Dive into Low-Level Programming - Expanded
tomzoh
4
3.2k
Node-RED × MCP 勉強会 vol.1
1ftseabass
PRO
0
140
【TiDB GAME DAY 2025】Shadowverse: Worlds Beyond にみる TiDB 活用術
cygames
0
1.1k
SalesforceArchitectGroupOsaka#20_CNX'25_Report
atomica7sei
0
170
20250625 Snowflake Summit 2025活用事例 レポート / Nowcast Snowflake Summit 2025 Case Study Report
kkuv
1
310
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
930
Practical Orchestrator
shlominoach
188
11k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
Making Projects Easy
brettharned
116
6.3k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Adopting Sorbet at Scale
ufuk
77
9.4k
Statistics for Hackers
jakevdp
799
220k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.8k
Transcript
Mocks in unit test of Ruby 申思维 Siwei
什 要用 元 ? 为 么 单 测试 Why UT?
➲ 1. 把 手 操作 下来, 成自 。 动 记录 变 动 Manual Operations => Automatic ➲ 2. 可以多次运行,是持 集成 的基 。 续 测试 础 The Basic of Continous Integration ➲ 3. 运行方便,极大减 程序 担。 轻 员负 Save developer's life.
比 对 IRB: > a = 1 > b =
2 > puts a + b > 3 Unit test: def test_should_show_1_add_2 a = 1; b = 2; assert a+b == 3 end
中的 现实 问题 Problems we met 某个 目, 始了一年, 运行需要与
项 开 3 个外部系 配合: 统 An existing app interacting with 3 external systems: ➲ 1. web service system ➲ 2. authentication system ➲ 3. authorization system
中的 现实 问题 The situation of test cases. 元 的情况:
单 测试 ➲ 1. 400 test cases. 2. too slow. 20+ minutes. 3. not stable , 5% 的 WEB SERVICE test cases will fail.
后果 Results ➲ 人 越来越不想运行 元 。 开发 员 单
测试 Developers don't want to use Unit tests. ➲ 程中,容易走神。( 开发过 20 分 的 ) 钟 时间 Developers often lost their focus during the coding. ➲ 出 率太高。 错 Not stable 直接 致了,系 以 ,想想就 大。 导 统难 维护 头 用 成 人 ,体 十分不好。 户 为测试 员 验
解决方案 Solutions 目 : 短 元 运行的 。 标 缩
单 测试 时间 Target :shorten the running time. 手段: 使用 模 象 和方法。 拟对 ➲ 原来: 用一次,需要 调 15 秒。 Before : 15 s ➲ 模 象: 拟对 0.00xx 秒。 Now: 0.000x s 1. Mock : for objects. 2. Stub : for methods.
Mock Object Real object: ( cost 15 seconds) class DeviceResource
def query(parameters) return json.decode(service(parameters)) end end Mock object: ( 0.000x seconds) class DeviceResource def query(parameters) return “{ status: success, id: 3 }” end end
Stub a method def get_name return “Jim” end get_name #
=> “Jim” require 'rspec-mock' stub(:get_name).and_return (“Kate”) get_name # => “Kate”
Two Mode for Running the Test ➲ 1. the mock
mode: $ rpsec spec ➲ 2. also supports the real mode: $ rspec spec with_real_webservice=true
The result ➲ 目更好了 项 Project becomes better: 1. 代
量更高 码质 .higher code quality. 2. 速度更快 开发 faster development & delivery. 3. 更少。用 更 意 错误 户 满 . less bugs.
结论 Conclusion ➲ 是使用 元 。 总 单 测试 Always
use unit tests. ➲ 元 :可重 ,速度快, 定。( 让单 测试 复 稳 make unit tests faster, stable and reusable )
Thank you ! 谢谢 申思 维 Siwei Shen
[email protected]
http://shensiwei.com