300b62dcd5325b6189463e9b1ea25da277422ca1
test-doubles.md
... | ... | @@ -33,18 +33,30 @@ class TemperatureConverterTest < MiniTest::Test |
33 | 33 | end |
34 | 34 | ``` |
35 | 35 | |
36 | +This is very easy. The SUT does not depend on other classes. |
|
37 | + |
|
36 | 38 | ### Testing messages received from others -- When to use a stub |
37 | 39 | |
38 | 40 | Now let's say that we have a converter object that is capable of a variety of conversions. The |
39 | 41 | way this is going to work is that we are going to pass in the type of conversion we want, along |
40 | -with a value to be converted, and we want to get the right result. It will look something like this: |
|
42 | +with a value to be converted, and we want to get the right result. |
|
43 | + |
|
44 | +It will look something like this: |
|
41 | 45 | |
42 | 46 | Converter.new(FToCConverter).convert(32) |
43 | 47 | |
48 | +Now our Converter class depends on a collaborator, FToCConverter. XTD calls this an |
|
49 | +"indirect input" (p. 125), and the name it gives to this kind of collaborator is a DOC -- depended-on component. We could test Converter with a |
|
50 | +specific Collaborator (FToCConverter) or we can try to test the SUT in isolation. |
|
51 | + |
|
44 | 52 | When we test the converter, we are not attempting to establish whether the conversion is correct; |
45 | 53 | instead, we want to verify that it can delegate the 32 to the specific converter and return the |
46 | -value. Additionally, we are writing the main converter first. We don't even know the range of |
|
47 | -specific converters we are going to want. |
|
54 | +value. Additionally, we may be writing the main converter first. We may not even know the range of |
|
55 | +specific converters we are going to want, or have one in hand. |
|
56 | + |
|
57 | +#### Stubbing |
|
58 | + |
|
59 | +A stub is an implementation that returns a canned answer (POODR, p. 210). |
|
48 | 60 | |
49 | 61 | If we create a stub manually, we will want an instance of FToCConverter's convert method to return |
50 | 62 | a value that we can verify. It might look like this: |