title: Do I have to fake a value object in my unit test
body: <p>I have written a class using TDD containing a method (method under test) which takes a simple value object as a parameter (<code>range</code>). </p>
  
  <p><strong>Code:</strong></p>
  
  <p>The method under test looks like this:</p>
  
  <pre><code>public List&lt;string&gt; In(IRange range)
  {
       var result = new List&lt;string&gt;();
       for (int i = range.From; i &lt;= range.To; i++)
       {
            //...
       }
       return result;
  }
  </code></pre>
  
  <p>Furthermore I have a unit test to verify my method under test:</p>
  
  <pre><code>[TestMethod]
  public void In_SimpleNumbers_ReturnsNumbersAsList()
  {
      var range = CreateRange(1, 2);
      var expected = new List&lt;string&gt;() { "1", "2" };
      var result = fizzbuzz.In(range);
      CollectionAssert.AreEqual(expected, result);
  }
  
  private IRange CreateRange(int from, int to)
  {
      return new Fakes.StubIRange() 
      { 
          FromGet = () =&gt; { return from; }, 
          ToGet = () =&gt; { return to; } 
      };
  }
  </code></pre>
  
  <p><strong>Question:</strong></p>
  
  <p>I have read Roy Osherove's book on unit testing ("The Art of Unit Testing"). In there he says </p>
  
  <blockquote>
    <p>"external dependencies (filesystem, time, memory etc.) should be
    replaced by stubs"</p>
  </blockquote>
  
  <p>What does he mean by <em>external</em> dependency? Is my value object (range) also an external dependency which should be faked? Should I fake all dependencies a class have?</p>
  
  <p>Can someone give me an advice </p>