RSpec Tutorial
RSpec Resources
Selected Reading
选读
- RSpec - Expectations
- RSpec - Filtering
- RSpec - Metadata
- RSpec - Helpers
- RSpec - Subjects
- RSpec - Tags
- RSpec - Hooks
- RSpec - Stubs
- RSpec - Test Doubles
- RSpec - Matchers
- RSpec - Writing Specs
- RSpec - Basic Syntax
- RSpec - Introduction
- RSpec - Home
RSpec Resources
Selected Reading
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
选读
RSpec - Test Doubles
RSpec - Test Doubles
在本章中,我们将讨论RSpec Doubles,又称RSpec Mocks。 双重是另一个物体“能够”的物体。 你们可能想知道,这究竟是什么意思,为什么你们需要。
让我说,你正在申请学校,你有一个课堂,代表学生的课堂和学生的课堂,即课堂和学生班。 你们需要首先为一年级撰写法规,因此,请允许我说,从教室班开始。
class ClassRoom def initiapze(students) @students = students end def pst_student_names @students.map(&:name).join( , ) end end
这是一个简单的班级,它有一个方法清单——学生姓名,该名称可回归经限定的学生人数。 现在,我们要为这一类学生进行测试,但是如果我们没有创造学生阶级,我们怎么办? 我们需要一种双重检验。
而且,如果我们有一个像学生目标一样的“大米”课程,那么我们的班子测试不会取决于学生班子。 我们称之为这种孤立试验。
如果我们的班子测试不依赖于任何其他班子,那么当测试失败时,我们就能够立即知道,我们的班子中就有一个 b子,而不是其他一些班子。 铭记在现实世界,你可能正在建造一个需要与他人撰写的另一类人互动的班子。
这正是RSpec Doubles(摩擦)变得有用的地方。 我们的“学生——姓名”方法在其“学生”成员变量中将每个学生的名词方法打上。 因此,我们需要双倍,采用一种名称方法。
这里是《职业学校法》和《职业学校考试》,但注意到没有界定学生班级。
class ClassRoom def initiapze(students) @students = students end def pst_student_names @students.map(&:name).join( , ) end end describe ClassRoom do it the pst_student_names method should work correctly do student1 = double( student ) student2 = double( student ) allow(student1).to receive(:name) { John Smith } allow(student2).to receive(:name) { Jill Smith } cr = ClassRoom.new [student1,student2] expect(cr.pst_student_names).to eq( John Smith,Jill Smith ) end end
在实施上述法典时,它将产生以下产出。 您的计算机时间可能略有不同:
. Finished in 0.01 seconds (files took 0.11201 seconds to load) 1 example, 0 failures
如您所见,使用检测双倍。 即便依赖没有定义或无法使用的类别,也允许你测试你的法典。 此外,这意味着,在试验失败时,你可以告诉大家,由于在你的班子里出现问题,而不是由他人撰写的班子,你会这样做。
Advertisements