  
<div id="snippet_322" class="snippet">
  <h2><a href="/snippets/322-How-to-test-a-Sinatra-webapp-with-Rspec" title="How to test a Sinatra webapp with Rspec - Ruby - sinatra, rspec, spec, testing, bdd">How to test a Sinatra webapp with Rspec</a></h2>
  <div class="details">
    <a style="background-color: #FFFF94;" href="http://snippets.aktagon.com/languages/124-Ruby">
      Ruby</a> posted 11 months ago by christian
          
  </div>

  <div class="body">
    <p>Create spec/app_spec.rb and put the following in it:</p>
<p><pre class="active4d"><span class="line-numbers">   1 </span> <span class="Keyword">require</span> <span class="String"><span class="String">'</span>sinatra<span class="String">'</span></span>
<span class="line-numbers">   2 </span> <span class="Keyword">require</span> <span class="String"><span class="String">'</span>spec/interop/test<span class="String">'</span></span>
<span class="line-numbers">   3 </span> <span class="Keyword">require</span> <span class="String"><span class="String">'</span>sinatra/test/unit<span class="String">'</span></span>
<span class="line-numbers">   4 </span> 
<span class="line-numbers">   5 </span> <span class="Keyword">require</span> <span class="String"><span class="String">'</span>app<span class="String">'</span></span>
<span class="line-numbers">   6 </span> <span class="Keyword">require</span> <span class="String"><span class="String">'</span>test/spec<span class="String">'</span></span>
<span class="line-numbers">   7 </span> 
<span class="line-numbers">   8 </span> set <span class="UserDefinedConstant"><span class="UserDefinedConstant">:</span>environment</span>, <span class="UserDefinedConstant"><span class="UserDefinedConstant">:</span>test</span>
<span class="line-numbers">   9 </span> 
<span class="line-numbers">  10 </span> describe <span class="String"><span class="String">'</span>The HelloWorld App<span class="String">'</span></span> <span class="Keyword">do</span>
<span class="line-numbers">  11 </span>   <span class="FunctionName">before</span>(<span class="UserDefinedConstant"><span class="UserDefinedConstant">:</span>each</span>) <span class="Keyword">do</span>
<span class="line-numbers">  12 </span>     set <span class="UserDefinedConstant"><span class="UserDefinedConstant">:</span>views</span> =&gt; <span class="LibraryClassType">File</span>.<span class="FunctionName">join</span>(<span class="LibraryClassType">File</span>.<span class="FunctionName">dirname</span>(<span class="Variable">__FILE__</span>), <span class="String"><span class="String">&quot;</span>..<span class="String">&quot;</span></span>, <span class="String"><span class="String">&quot;</span>views<span class="String">&quot;</span></span>)
<span class="line-numbers">  13 </span>   <span class="Keyword">end</span>
<span class="line-numbers">  14 </span> 
<span class="line-numbers">  15 </span>   it <span class="String"><span class="String">&quot;</span>says hello<span class="String">&quot;</span></span> <span class="Keyword">do</span>
<span class="line-numbers">  16 </span>     get <span class="String"><span class="String">'</span>/<span class="String">'</span></span>
<span class="line-numbers">  17 </span>     response.<span class="FunctionName">should</span>.<span class="FunctionName">be</span>.<span class="FunctionName">ok</span>
<span class="line-numbers">  18 </span>     response.<span class="FunctionName">body</span>.<span class="FunctionName">should</span>.<span class="FunctionName">equal</span> <span class="String"><span class="String">'</span>Hello World<span class="String">'</span></span>
<span class="line-numbers">  19 </span>   <span class="Keyword">end</span>
<span class="line-numbers">  20 </span> <span class="Keyword">end</span>
</pre></p>
<p>Then run the test:<br />
<pre class="active4d"><span class="line-numbers">   1 </span> spec spec<span class="Operator">/</span>app_spec.<span class="FunctionName">rb</span>
</pre></p>
  </div>

  <div style="font-size: 0.8em;margin:0.5em;">
    
      Tagged <a href="/tags/712-sinatra">sinatra</a>, <a href="/tags/342-rspec">rspec</a>, <a href="/tags/713-spec">spec</a>, <a href="/tags/552-testing">testing</a>, <a href="/tags/668-bdd">bdd</a>
    
    
  </div>
</div>



  
<div id="snippet_304" class="snippet">
  <h2><a href="/snippets/304-Test-functionality-in-isolation-with-Autospec" title="Test functionality in isolation with Autospec - Ruby - autotest, testing, bdd, tdd, autospec, zentest">Test functionality in isolation with Autospec</a></h2>
  <div class="details">
    <a style="background-color: #FFFF94;" href="http://snippets.aktagon.com/languages/124-Ruby">
      Ruby</a> posted about 1 year ago by christian
          
  </div>

  <div class="body">
    <p>This configuration will make autospec run &#8220;spec/models/xyz_spec&#8221; when a file in &#8220;lib/xyz/ is modified&#8221;. No other tests are run.</p>
<p>Put the following code in ./.autotest:</p>
<p><pre class="active4d"><span class="line-numbers">   1 </span> <span class="LibraryClassType">Autotest</span>.<span class="FunctionName">add_hook</span> <span class="UserDefinedConstant"><span class="UserDefinedConstant">:</span>initialize</span> <span class="Keyword">do </span>|<span class="Variable">at</span>|
<span class="line-numbers">   2 </span>   at.<span class="FunctionName">clear_mappings</span>
<span class="line-numbers">   3 </span>   <span class="String"><span class="String">%w{</span>.svn .hg .git vendor<span class="String">}</span></span>.<span class="FunctionName">each</span> {|<span class="Variable">exception</span>| at.<span class="FunctionName">add_exception</span>(exception)}
<span class="line-numbers">   4 </span> 
<span class="line-numbers">   5 </span>   at.<span class="FunctionName">add_mapping</span>(<span class="String"><span class="String">%r%</span>^lib/xyz/.*<span class="UserDefinedConstant">\.</span>rb$<span class="String">%</span></span>) {
<span class="line-numbers">   6 </span>     at.<span class="FunctionName">files_matching</span> <span class="String"><span class="String">%r%</span>^spec/models/xyz_spec<span class="UserDefinedConstant">\.</span>rb$<span class="String">%</span></span>
<span class="line-numbers">   7 </span> <span class="LineComment"><span class="LineComment">#</span></span>
<span class="line-numbers">   8 </span> <span class="LineComment"><span class="LineComment">#</span> Uncomment if more tests are needed...</span>
<span class="line-numbers">   9 </span> <span class="LineComment"><span class="LineComment">#</span> +   at.files_matching %r%^spec/models/xyz_spec\.rb$%</span>
<span class="line-numbers">  10 </span> <span class="LineComment"><span class="LineComment">#</span></span>
<span class="line-numbers">  11 </span>   }
<span class="line-numbers">  12 </span> <span class="Keyword">end</span>
</pre></p>
  </div>

  <div style="font-size: 0.8em;margin:0.5em;">
    
      Tagged <a href="/tags/343-autotest">autotest</a>, <a href="/tags/552-testing">testing</a>, <a href="/tags/668-bdd">bdd</a>, <a href="/tags/669-tdd">tdd</a>, <a href="/tags/670-autospec">autospec</a>, <a href="/tags/344-zentest">zentest</a>
    
    
  </div>
</div>






