<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>lucasfais.com</title>
	<atom:link href="http://lucasfais.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://lucasfais.com</link>
	<description></description>
	<lastBuildDate>Fri, 05 Mar 2010 16:20:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>multibyte/unicode_database.rb:37: [BUG] Segmentation fault  ruby 1.8.7 (uby 1.8.7 (2010-01-10 patchlevel 249)</title>
		<link>http://lucasfais.com/2010/03/05/unicode_database-rb37-bug-segmentation-fault-ruby-1-8-7-2010-01-10-patchlevel-249/</link>
		<comments>http://lucasfais.com/2010/03/05/unicode_database-rb37-bug-segmentation-fault-ruby-1-8-7-2010-01-10-patchlevel-249/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 12:27:29 +0000</pubDate>
		<dc:creator>Lucas Fais</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[bug]]></category>

		<guid isPermaLink="false">http://lucasfais.com/?p=103</guid>
		<description><![CDATA[Ontem, Eric Fer e eu tivemos este erro várias vezes enquanto tentavamos rodar os testes do projeto em que trabalhamos:

... activesupport/lib/active_support/multibyte/unicode_database.rb:37: [BUG] Segmentation fault
 ruby 1.8.7 (2010-01-10 patchlevel 249) ...

Detalhes sobre o problema aqui.
Resumo: Temos instalado o ruby 1.8.7 patch level 249. E, aparentemente, este é um bug presente nos patch levels 248 e 249.
Solução: [...]]]></description>
			<content:encoded><![CDATA[<p>Ontem, <a href="http://twitter.com/ericfer">Eric Fer</a> e eu tivemos este erro várias vezes enquanto tentavamos rodar os testes do projeto em que trabalhamos:</p>
<pre class="terminal">
... activesupport/lib/active_support/multibyte/unicode_database.rb:37: [BUG] Segmentation fault
 ruby 1.8.7 (2010-01-10 patchlevel 249) ...
</pre>
<p>Detalhes sobre o problema <a href="http://redmine.ruby-lang.org/issues/show/2557">aqui</a>.</p>
<p>Resumo: Temos instalado o ruby 1.8.7 patch level 249. E, aparentemente, este é um bug presente nos patch levels 248 e 249.</p>
<p>Solução: Voltamos ao ruby 1.8.7 patch level 174. Tudo resolvido. </p>
<p>Logicamente, ficou bem mais fácil com <a href="http://rvm.beginrescueend.com/">RVM</a> <img src='http://lucasfais.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://lucasfais.com/2010/03/05/unicode_database-rb37-bug-segmentation-fault-ruby-1-8-7-2010-01-10-patchlevel-249/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agora sim! Completo com RVM</title>
		<link>http://lucasfais.com/2009/11/29/agora-sim-completo-com-rvm/</link>
		<comments>http://lucasfais.com/2009/11/29/agora-sim-completo-com-rvm/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 19:13:39 +0000</pubDate>
		<dc:creator>Lucas Fais</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[libxml-ruby]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[rvm]]></category>

		<guid isPermaLink="false">http://lucasfais.com/?p=84</guid>
		<description><![CDATA[No último post eu expliquei como instalar a gem do MySQL com o RVM em um ambiente 64 bits. A solução foi instalar o MySQL 64 bits já que o ruby instalado pelo RVM era 64 bits. Tudo estava funcionando normalmente.
Porém, instalando todas as gems necessárias para o projeto em que trabalho atualmente, tive problemas [...]]]></description>
			<content:encoded><![CDATA[<p>No <a href="/2009/11/26/gem-do-mysql-com-rvm/" target="_blank">último post</a> eu expliquei como instalar a gem do <a href="http://dev.mysql.com/downloads/" target="_blank">MySQL</a> com o <a href="http://rvm.beginrescueend.com/" target="_blank">RVM</a> em um ambiente 64 bits. A solução foi instalar o MySQL 64 bits já que o ruby instalado pelo RVM era 64 bits. Tudo estava funcionando normalmente.</p>
<p>Porém, instalando todas as gems necessárias para o projeto em que trabalho atualmente, tive problemas com a gem libxml-ruby: &#8220;Symbol not found: _xmlParserDebugEntities&#8221;. Este problema só aconteceu com o ruby 64 bits.</p>
<p>Estou utilizando o Mac OS X 10.5, mas acredito que se aplique para qualquer S.O. 64 bits.</p>
<p>Depois de muitas tentativas sem sucesso, decidi mudar a abordagem. Parti para instalação o ruby no RVM em 32 bits. Desta forma, tudo funcionou. Instalei várias gems, e nesse momento, estou rodando todos os meus projetos sem nenhum problema.</p>
<h3>Instalando o ruby no RVM em 32 bits</h3>
<p>No meu caso, vou utilizar a versão 1.8.7 do ruby. Caso deseje utilizar outra versão, apenas substitua 1.8.7 pela versão deseja nos comandos que forem executados.</p>
<p>Se você não tem o RVM instalado:</p>
<pre class="terminal">$ sudo gem install rvm
$ rvm-install</pre>
<p>Se você já tem o RVM instalado, verifique qual a arquitetura do ruby:</p>
<pre class="terminal">$ rvm 1.8.7
$ file $(which ruby)</pre>
<p>Se o resultado for diferente de &#8220;Mach-O executable i386&#8243;, remova o ruby instalado:</p>
<pre class="terminal">$ rvm remove 1.8.7</pre>
<p>O seu arquivo ~/.rvmrc deve ter o conteúdo abaixo. Caso ele não exista, crie.</p>
<pre class="terminal">rvm_archflags="-arch i386"</pre>
<p>Agora instale o ruby:</p>
<pre class="terminal">$ export ARCHFLAGS="-arch i386"; optflags="-arch i386" rvm install 1.8.7</pre>
<p>Para ter certeza, verifique a arquiterura do ruby instalado (deve ser &#8220;Mach-O executable i386&#8243;):</p>
<pre class="terminal">$ rvm 1.8.7
$ file $(which ruby)</pre>
<p>Para aqueles que desejam instalar a gem do MySQL, tenha certeza que o MySQL instalado é 32 bits:</p>
<pre class="terminal">$ file $(which mysql)</pre>
<p>Mais uma vez, o resultado deve ser  &#8221;Mach-O executable i386&#8243;. Caso não seja, <a href="http://dev.mysql.com/downloads/mysql" target="_blank">reinstale o MySQL</a>. Não se esqueça de baixar a versão x86.</p>
<p>Para instalar a gem do MySQL execute:</p>
<pre class="terminal">$ gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config</pre>
<p>A partir de agora, tudo deve funcionar normalmente. Instale todas as gems que você precisa.</p>
<p>Referências:<br />
<a href="http://www.nuxlli.com.br/2009/11/24/para-tudo-instale-o-rvm-antes/" target="_blank">http://www.nuxlli.com.br/2009/11/24/para-tudo-instale-o-rvm-antes/<br />
</a><a href="http://www.nuxlli.com.br/2009/11/24/rvm-onde-estou/" target="_blank">http://www.nuxlli.com.br/2009/11/24/rvm-onde-estou/<br />
</a><a href="http://rvm.beginrescueend.com/mysql/" target="_blank">http://rvm.beginrescueend.com/mysql/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://lucasfais.com/2009/11/29/agora-sim-completo-com-rvm/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Gem do MySQL com RVM</title>
		<link>http://lucasfais.com/2009/11/26/gem-do-mysql-com-rvm/</link>
		<comments>http://lucasfais.com/2009/11/26/gem-do-mysql-com-rvm/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 01:47:50 +0000</pubDate>
		<dc:creator>Lucas Fais</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[rvm]]></category>

		<guid isPermaLink="false">http://lucasfais.com/?p=72</guid>
		<description><![CDATA[Sim, o autor deste blog continua vivo&#8230;
Peço desculpas aos raros leitores, mas este ano foi bastante corrido e, infelizmente, o blog ficou abandonado. Espero escrever com mais frequência.
Alguns dias atrás, o Éverton Ribeiro deu uma super dica em seu blog para quem trabalha com ruby: o Ruby Version Manager (a.k.a RVM). Com ele você pode [...]]]></description>
			<content:encoded><![CDATA[<p>Sim, o autor deste blog continua vivo&#8230;</p>
<p>Peço desculpas aos raros leitores, mas este ano foi bastante corrido e, infelizmente, o blog ficou abandonado. Espero escrever com mais frequência.</p>
<p>Alguns dias atrás, o <a href="http://www.nuxlli.com.br/sobre/">Éverton Ribeiro</a> deu uma <a href="http://www.nuxlli.com.br/2009/11/24/para-tudo-instale-o-rvm-antes/">super dica</a> em seu blog para quem trabalha com <em>ruby</em>: o <a href="http://rvm.beginrescueend.com">Ruby Version Manager</a> (<em>a.k.a</em> <strong>RVM</strong>). Com ele você pode instalar e gerenciar facilmente várias versões do <em>ruby</em> e criar <em>sets</em> de <em>gems</em> de acordo com as suas necessidades.</p>
<p>Hoje, tivemos problemas para instalar a <em>gem</em> do MySQL em uma versão do <em>ruby</em> instalado pelo <em>RVM</em>. Depois de várias tentativas e vasculhadas na internet, conseguimos entender o problema.</p>
<p>Por padrão, pelo menos no Mac OS X Leopard (64 bits), o <em>RVM</em> instala o <em>ruby</em> com arquitetura x86_64. Entretanto, o MySQL que tinhamos instalado era i386. Sendo assim, a <em>gem</em> simplesmente não funcionava, e exibia o seguinte erro ao tentar usá-la:</p>
<pre class="terminal">$ rake db:migrate
(in /private/tmp/mysql_test)
dyld: lazy symbol binding failed: Symbol not found: _mysql_init
Referenced from: /Users/lfais/.rvm/gems/ruby/1.8.7/gems/mysql-2.8.1/lib/mysql_api.bundle
Expected in: flat namespace

dyld: Symbol not found: _mysql_init
Referenced from: /Users/lfais/.rvm/gems/ruby/1.8.7/gems/mysql-2.8.1/lib/mysql_api.bundle
Expected in: flat namespace

Trace/BPT trap</pre>
<p><br/></p>
<h3>A solução</h3>
<p>Para verificar a arquitetura do MySQL e do <em>ruby</em>, respectivamente, execute:</p>
<pre class="terminal">$ file $(which mysql)
$ file $(which ruby)</pre>
<p>A solução foi instalar o MySQL com arquitetura x86_64 e reinstalar a <em>gem</em> do MySQL.<br />
Para isso execute os seguintes passos:</p>
<ol>
<li>Se você já tem o MySQL instalado, não esqueça de fazer backup de seus <em>databases</em> e da pasta do MySQL (geralmente /usr/local/mysql).</li>
<li>Faça <a href="http://dev.mysql.com/downloads/mysql/5.1.html">download</a> do MySQL para o seu S.O. Não esqueça que a arquitetura tem que ser x86_64. No meu caso, baixei o <a href="http://dev.mysql.com/downloads/mysql/5.1.html#macosx-dmg">dmg para Mac OS X 10.5</a> com a verão 5.1.41.</li>
<li><a href="http://dev.mysql.com/doc/refman/5.1/en/installing.html">Instale ou atualize</a> o MySQL.</li>
<li>Coloque o seguinte conteúdo no seu arquivo ~/.rvmrc (caso não tenha, crie-o):</li>
<p>
<pre class="terminal">rvm_archflags="-arch x86_64"</pre>
</p>
<li>Caso tenha a <em>gem</em> do MySQL instalada, desinstale:</li>
<p>
<pre class="terminal">$ gem uninstall mysql</pre>
</p>
<li>Instale a gem do MySQL com o seguinte comando (lembre-se que utilizando o RVM <strong>não</strong> deve-se usar <strong>sudo</strong> para instalar gems):</li>
<p>
<pre class="terminal">$ export ARCHFLAGS="-arch x86_64" ; gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config</pre>
</p>
</ol>
<p>Com esses passos, tudo deve funcionar normalmente.<br />
Obrigado ao <a href="http://www.nuxlli.com.br/sobre/">Éverton</a> e ao <a href="http://twitter.com/ericfer">Eric Fer</a> que colaboraram para a resolução do problema.</p>
<p>Até a próxima!</p>
<p>Referências:<br />
<a href="http://rvm.beginrescueend.com/mysql/">http://rvm.beginrescueend.com/mysql/</a><br />
<a href="http://www.nuxlli.com.br/2009/11/24/para-tudo-instale-o-rvm-antes/">http://www.nuxlli.com.br/2009/11/24/para-tudo-instale-o-rvm-antes/</a><br />
<a href="http://www.nuxlli.com.br/2009/11/24/rvm-onde-estou/">http://www.nuxlli.com.br/2009/11/24/rvm-onde-estou/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://lucasfais.com/2009/11/26/gem-do-mysql-com-rvm/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Testando aplicações Rails com Shoulda e factory_girl</title>
		<link>http://lucasfais.com/2008/10/06/testando-aplicacoes-rails-com-shoulda-e-factory_girl/</link>
		<comments>http://lucasfais.com/2008/10/06/testando-aplicacoes-rails-com-shoulda-e-factory_girl/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 21:58:14 +0000</pubDate>
		<dc:creator>Lucas Fais</dc:creator>
				<category><![CDATA[rails]]></category>
		<category><![CDATA[factory_girl]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[shoulda]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[unit]]></category>

		<guid isPermaLink="false">http://lucasfais.com/?p=21</guid>
		<description><![CDATA[No meu primeiro artigo, vou mostrar como testar aplicações Rails de forma simples utilizando Shoulda e factory_girl. Esta é apenas uma introdução, um &#8220;por onde começar&#8230;&#8221;.
Se você não gosta de fixtures, acha o Test:Unit muito básico ou nunca fez testes com aplicações em Rails: Este artigo foi feito sob medida pra você!
Shoulda é um plugin/gem [...]]]></description>
			<content:encoded><![CDATA[<p>No meu primeiro artigo, vou mostrar como testar aplicações Rails de forma simples utilizando <a href="http://www.thoughtbot.com/projects/shoulda">Shoulda</a> e <a href="http://www.thoughtbot.com/projects/factory_girl">factory_girl</a>. Esta é apenas uma introdução, um &#8220;por onde começar&#8230;&#8221;.</p>
<p>Se você não gosta de fixtures, acha o <em>Test:Unit</em> muito básico ou <strong>nunca fez testes</strong> com aplicações em Rails:<strong> Este artigo foi feito sob medida pra você!</strong></p>
<p><a href="http://www.thoughtbot.com/projects/shoulda">Shoulda</a> é um plugin/gem que adiciona alguns recursos poderosos ao conhecido <em>Test::Unit</em>. Com ele, faremos mais testes com menos linhas de código.</p>
<p><a href="http://www.thoughtbot.com/projects/factory_girl">factory_girl</a> é uma <em>gem</em> que facilita a criação de dados para testes. Aos invés de usarmos as antigas <em>fixtures</em>, usaremos algo, digamos, mais &#8220;sexy&#8221;, como a comunidade gosta de chamar.</p>
<p>Vamos direto a prática. O meu ambiente está configurado com Rails 2.1.1.</p>
<p>Crie uma aplicação Rails. Aqui estou usando MySQL:</p>
<pre class="terminal">$ rails my_cash -d mysql
$ cd my_cash/</pre>
<p>Agora instale o plugin do Shoulda. Você também pode optar por usar a gem. No meu caso, prefiro adicioná-lo ao projeto:</p>
<pre class="terminal">$ script/plugin install git://github.com/thoughtbot/shoulda.git</pre>
<p>Neste exemplo, vou criar uma aplicação bem simples para controlar gastos pessoais. Nela, poderei cadastrar minhas despesas e receitas (que chamarei de operações).</p>
<p>Gere um <em>scaffold</em> para o model operação:</p>
<pre class="terminal">$ ./script/generate scaffold Operation description:string category:string value:float</pre>
<p>Edite o arquivo config/database.yml e configure o seu banco de dados.<br />
Após isso, crie todos os databases:</p>
<pre class="terminal">$ rake db:create:all</pre>
<p>Agora execute um db:migrate para criar as tabelas no database development:</p>
<pre class="terminal">$ rake db:migrate</pre>
<p>Se tudo correu bem até aqui, você pode iniciar sua aplicação e conferir se tudo está funcionando corretamente:</p>
<pre class="terminal">$ ./script/server</pre>
<p>Acesse <a href="http://localhost:3000/operations">http://localhost:3000/operations</a> e adicione algumas operações. Vamos considerar que uma operação de valor positivo é uma receita, e valor negativo é despesa.</p>
<p>Você terá algo, mais ou menos, assim:</p>
<div id="attachment_42" class="wp-caption alignnone" style="width: 510px"><a href="http://lucasfais.com/wp-content/uploads/2008/10/operations.png"><img class="size-full wp-image-42" title="operations" src="http://lucasfais.com/wp-content/uploads/2008/10/operations.png" alt="Exemplo de operações" width="500" height="300" /></a><p class="wp-caption-text">Exemplo de operações</p></div>
<p>Vamos os testes!<br />
Edite o arquivo test/unit/operation_test.rb.</p>
<p>Uma operação deve ter, pelo menos, descrição e valor preenchidos. Para fazermos este teste utilizaremos uma macro adicionada pelo Shoulda chamada should_require_attributes:<br />
<script src="http://gist.github.com/13471.js" type="text/javascript"></script></p>
<p>Você pode rodar os testes:</p>
<pre class="terminal">$ rake test:units</pre>
<p>Eles vão falhar e você receberá uma mensagem, mais ou menos, assim:</p>
<pre class="terminal">1) Failure:
test: Operation should require description to be set. (OperationTest)
...
Operation allowed nil as a value for description.
...
2) Failure:
test: Operation should require value to be set. (OperationTest)
...
Operation allowed nil as a value for description.
...
2 tests, 2 assertions, 2 failures, 0 errors</pre>
<p>Os testes falharam porque ainda não colocamos no nosso <em>model</em> as validações necessárias. Mas veja que interessante. Temos mensagens bastante descritivas sobre os nossos testes:</p>
<p><strong>&#8220;Operation should require description to be set. Operation allowed nil as a value for description&#8221;.</strong></p>
<p>Está aí um dos grandes pontos fortes do Shoulda. Conseguimos fazer nossos testes ficarem bem próximos de uma especificação. Veremos mais sobre isso adiante.</p>
<p>Vamos editar o arquivo do app/models/operation.rb e adicionar as validações necessárias para evitar que o teste falhe: <script src="http://gist.github.com/13472.js" type="text/javascript"></script></p>
<p>Rode os testes novamente (<strong>rake test:units</strong>) e veja nosso novo resultado:</p>
<pre class="terminal">...
2 tests, 6 assertions, 0 failures, 0 errors</pre>
<p>Repare que “por baixo dos panos” o Shoulda criou 2 testes e 6 asserções para garantir que o os nosso model valida a presença dos atributos description e value. Tudo isso com apenas uma linha de código!</p>
<p>Shoulda tem várias macros como a que usamos em nossos testes. Elas tornam nossas classes de teste muito mais enxutas. Para conhecê-las acesse o <a href="http://www.thoughtbot.com/projects/shoulda">site do Shoulda</a>.</p>
<p>Antes de prosseguirmos com nossos testes com o Shoulda, vamos configurar o factory_girl. A partir de agora, precisaremos de alguns objetos <em>Operation</em>.</p>
<p>Instale a gem do factory_girl (como estou no Ubuntu, vou utilizar o <strong>sudo</strong> pra isso):</p>
<pre class="terminal">$ sudo gem install thoughtbot-factory_girl --source http://gems.github.com</pre>
<p>Agora precisamos informar ao Rails que nossa aplicação depende da gem factory_girl.<br />
Para isso, adicione a seguinte linha ao arquivo config/enviroment.rb, dentro do bloco <em>Rails::Initializer.run</em>:<br />
<script src="http://gist.github.com/14754.js" type="text/javascript"></script></p>
<p>Edite o arquivo test/test_helper.rb e comente a linha abaixo para desabilitar o uso de fixtures:<br />
 <script src="http://gist.github.com/14755.js" type="text/javascript"></script></p>
<p>Caso você tenha um projeto que utiliza <em>fixtures</em> e você não quer migrá-lo completamente para factory_girl, não comente a linha acima. Acredito que <em>fixtures</em> e <em>factories</em> podem trabalhar juntas sem problemas.</p>
<p>Crie o arquivo test/factories.rb e adicione o seguinte conteúdo:<br />
<script src="http://gist.github.com/14757.js" type="text/javascript"></script></p>
<p>Neste arquivo, nós definimos nossos objetos que poderemos usar nos nossos testes.</p>
<p>Agora sim. Com o factory_girl configurado e alguns objetos Operation já definidos, podemos prosseguir.<br />
 Edite o arquivo test/unit/operation_test.rb e insira os seguintes métodos:<br />
 <script src="http://gist.github.com/14758.js" type="text/javascript"></script></p>
<p>Nos dois primeiros métodos, estou apenas testando o retorno do valor da primeira operação, e a categoria da segunda operação. Nos dois últimos, estou testando se a operação é uma receita ou uma despesa.</p>
<p>Veja que em cada método estou recuperando um objeto da nossa <em>Factory</em> e fazendo um <em>assert</em>. Como eu disse no início, o Shoulda apenas adiciona funcionalidades ao <em>Test:Unit</em>. Mesmo assim, você ainda pode usar os recursos padrões.</p>
<p>Para que os testes funcionem, adicione os seguintes métodos no model <em>Operation</em> (app/models/operation.rb):<br />
<script src="http://gist.github.com/14759.js" type="text/javascript"></script></p>
<p>Rode os testes (<strong>rake test:units</strong>) e terá o seguinte resultado:</p>
<pre class="terminal">6 tests, 10 assertions, 0 failures, 0 errors</pre>
<h3><strong>Contextos</strong></h3>
<p>Contexto é um recurso muito interessante do Shoulda. Com ele podemos especificar situações e tornar os testes mais legíveis. Continue lendo, você já vai entender e gostar muito.</p>
<p>Vou fazer um pequeno refactoring nos nossos testes. Leia o código abaixo com calma: <script src="http://gist.github.com/14761.js" type="text/javascript"></script></p>
<p>Repare como eu especifiquei situações (contextos) que fazem meus testes serem lidos de uma forma bastante lógica.</p>
<p>Se você simular um erro você receberá uma mensagem parecida com essa:</p>
<pre class="terminal">1) Failure:

test: A valid operation with value less than zero should be expense. (OperationTest)
...</pre>
<p>Viu como tudo fica claro? Ficará melhor ainda.</p>
<p>Um dos recursos que mais gosto no Shoulda é a tarefa shoulda:list que ele adiciona ao rake. Execute:</p>
<pre class="terminal">$ rake shoulda:list</pre>
<p>Você terá um retorno assim:</p>
<pre class="terminal">Operation
  A valid operation should require description to be set.
  A valid operation should require value to be set.
  A valid operation should return its category.
  A valid operation should return its value.
  A valid operation with value greater than zero should be income.
  A valid operation with value less than zero should be expense.
OperationsController
  test_should_create_operation
  test_should_destroy_operation
  test_should_get_edit
  test_should_get_index
  test_should_get_new
  test_should_show_operation
  test_should_update_operation</pre>
<p>Nos testes do model <em>Operation</em> estamos usando Shoulda. Olhe como as mensagens estão muito legíveis!<br />
Nos testes do <em>OperationController</em> estão testes padrões, gerados pelo scaffold, utilizando apenas <em>Test:Unit</em>. Notam a diferença?</p>
<p>Você também pode testar seus controllers utilizando o Shoulda. Leia mais <a href="http://thoughtbot.com/projects/shoulda/tutorial/controllers">aqui</a>.</p>
<p>Testes com a Shoulda você pode imprimir e conferir junto ao seu cliente. Fica tudo muito claro.</p>
<p>Com o conteúdo apresentado aqui, você já pode testar grande parte das aplicações.<br />
Mas esta foi apenas uma introdução do que é possível fazer com Shoulda e factory_girl. </p>
<p>Encontre mais informações nos seguintes links:</p>
<ul>
<li><a href="http://thoughtbot.com/projects/shoulda/">Shoulda</a></li>
<li><a href="http://www.thoughtbot.com/projects/factory_girl/">factory_girl</a></li>
<li><a href="http://www.makemesimple.com/blog/2008/06/27/learncast1-bdd-leve-com-shoulda-testando-modelos-activerecord/">Learncast #1: BDD leve com Shoulda &#8211; testando modelos ActiveRecord</a></li>
<li><a href="http://www.nomedojogo.com/2008/10/01/shoulda-20/">Shoulda 2.0</a></li>
</ul>
<p>Fiquem à vontade para enviar dúvidas, críticas e sugestões.</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasfais.com/2008/10/06/testando-aplicacoes-rails-com-shoulda-e-factory_girl/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>blog_counter += 1 #lucasfais.com</title>
		<link>http://lucasfais.com/2008/10/01/blog_counter-1-lucasfaiscom/</link>
		<comments>http://lucasfais.com/2008/10/01/blog_counter-1-lucasfaiscom/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 01:43:21 +0000</pubDate>
		<dc:creator>Lucas Fais</dc:creator>
				<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://lucasfais.com/?p=17</guid>
		<description><![CDATA[Olá! Para quem não me conhece, eu sou o Lucas Fais.
Demorei bastante para criar meu blog, mas enfim ele está aqui. Pretendo escrever sobre assuntos diversos na área de desenvolvimento de software.
Atualmente estou focando meus estudos em Rails. Nos próximos dias, vou postar meu primeiro artigo: uma breve introdução de como testar aplicações Rails utilizando [...]]]></description>
			<content:encoded><![CDATA[<p>Olá! Para quem não me conhece, eu sou o <a title="About" href="http://lucasfais.com/about/">Lucas Fais</a>.</p>
<p>Demorei bastante para criar meu blog, mas enfim ele está aqui. Pretendo escrever sobre assuntos diversos na área de desenvolvimento de software.</p>
<p>Atualmente estou focando meus estudos em Rails. Nos próximos dias, vou postar meu primeiro artigo: uma breve introdução de como testar aplicações Rails utilizando <a title="Shoulda" href="http://thoughtbot.com/projects/shoulda/" target="_blank">Shoulda</a> e <a title="factory_girl" href="http://www.thoughtbot.com/projects/factory_girl" target="_blank">factory_girl</a>.</p>
<p>Aguardem!</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasfais.com/2008/10/01/blog_counter-1-lucasfaiscom/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 1.540 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-07-29 10:29:55 -->
