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
75
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
36
ruby introduction ( Chinese)
sg552sg552
1
49
meta programming ruby
sg552sg552
5
210
Other Decks in Technology
See All in Technology
2023年度にEMとして頑張ったこと
ikefukurou777
0
100
JAWS-UG Bedrock Claude Night
yamahiro
3
730
Autonomous Database Cloud 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
15
35k
Babylon.js JAPAN活動紹介 (2024/4)
limes2018
1
120
Next.js に疲れた私は Vue3 に癒やされた
akagire
0
140
地理空間データ可視化・解析・活用ソリューション Pacific Spatial Solutions (PSS)
pacificspatialsolutions
0
340
成長をサポートするピープルマネジメントのやり方
sioncojp
9
1.2k
Microsoft Intune 勉強会 第 2 回目
tamaiyutaro
2
460
R3のコードから見る実践LINQ実装最適化・コンカレントプログラミング実例
neuecc
3
2.7k
Android Target SDK 35 (Android 15) 対応の概要
akkie76
0
160
開発パフォーマンスを最大化するための開発体制
ham0215
7
1.1k
EMとして2023年度に頑張ったこと / What we did well in FY2023 as a EM
pauli
1
260
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
649
58k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
Music & Morning Musume
bryan
41
5.6k
Art, The Web, and Tiny UX
lynnandtonic
290
19k
Being A Developer After 40
akosma
66
580k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
14
1.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
33
6k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
11
1k
Git: the NoSQL Database
bkeepers
PRO
423
63k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.6k
Fashionably flexible responsive web design (full day workshop)
malarkey
398
65k
Building a Modern Day E-commerce SEO Strategy
aleyda
21
6.4k
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