<?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>Se hace camino al andar... &#187; mockito</title>
	<atom:link href="http://blog.jmbeas.es/tag/mockito/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jmbeas.es</link>
	<description>Experiencias de un informático vocacional buscando la calidad y sus efectos colaterales.</description>
	<lastBuildDate>Mon, 16 Jan 2012 07:25:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>

   <image>
    <title>Se hace camino al andar...</title>
    <url>http://0.gravatar.com/avatar/8c024022cec721aaa11dc3b092e2c29c.png?s=48</url>
    <link>http://blog.jmbeas.es</link>
   </image>
		<item>
		<title>Sustitución fácil de colaboradores con Mockito</title>
		<link>http://blog.jmbeas.es/2008/12/12/sustitucion-facil-de-colaboradores-con-mockito/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sustitucion-facil-de-colaboradores-con-mockito</link>
		<comments>http://blog.jmbeas.es/2008/12/12/sustitucion-facil-de-colaboradores-con-mockito/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 05:20:00 +0000</pubDate>
		<dc:creator>jmbeas</dc:creator>
				<category><![CDATA[Del viejo blog]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[easymock]]></category>
		<category><![CDATA[mockito]]></category>

		<guid isPermaLink="false">http://jmbeas.iexpertos.com/sustitucion-facil-de-colaboradores-con-mockito/</guid>
		<description><![CDATA[Acabo de probar Mockito y creo que por fin he encontrado el framework de mocks que necesitaba. Crear &#8220;stubs&#8221; para sustituir a los colaboradores en las pruebas con EasyMock o jMock me resultaba muy laborioso, en cambio con Mockito es muy fácil. El ejemplo: @Test public void testComprarUnProducto() { TerminalPuntoDeVenta tpv = new TerminalPuntoDeVenta(100,logger); CodigoProducto [...]]]></description>
			<content:encoded><![CDATA[<div xmlns='http://www.w3.org/1999/xhtml'>Acabo de probar <a href='http://code.google.com/p/mockito/'>Mockito</a> y creo que por fin he encontrado el framework de mocks que necesitaba. Crear &#8220;stubs&#8221; para sustituir a los colaboradores en las pruebas con <a href='http://www.easymock.org/'>EasyMock</a> o <a href='http://www.jmock.org/'>jMock</a> me resultaba muy laborioso, en cambio con Mockito es muy fácil.</p>
<p>El ejemplo:
<pre class='java' name='code'> <a href="http://twitter.com/Test" class="twitter-user-link" title="Test profile on Twitter" target="_blank">@Test</a> public void testComprarUnProducto() {  TerminalPuntoDeVenta tpv = new TerminalPuntoDeVenta(100,logger);

  CodigoProducto codigo = new CodigoProducto("FANTA 33CL","1234567890");  DispositivoEscaner mockEscaner = mock(DispositivoEscaner.class);  when(mockEscaner.scan()).thenReturn(codigo);  tpv.setEscaner(mockEscaner);

  RepositorioProductos mockRepositorioProductos = mock(RepositorioProductos.class);  Producto producto = new Producto(codigo);  producto.setPrecio(10);  when(mockRepositorioProductos.buscarProducto(codigo)).thenReturn(producto);  tpv.setRepositorioProductos(mockRepositorioProductos);

  tpv.setImpresora(mock(DispositivoTicket.class));

  tpv.iniciarCompra();  tpv.scan();  tpv.finalizarCompra();  double resultado = tpv.cerrarCaja();  assertEquals(110,resultado,0); }</pre>
<p>Los métodos estáticos <tt>mock</tt> y <tt>when</tt> son la clave, especialmente <tt>when</tt>, porque en vez de liarnos a grabar <i>expectations</i> como con otros frameworks, con Mockito decimos <i>cuando</i> llamen al objeto sustituido a tal método y con tales parámetros, <i>entonces devuelve</i> tal resultado. Mucho más intuitivo.</p>
<p>Además, como estoy intentando &#8220;quitarme&#8221; de las pruebas que comprueban las colaboraciones, me viene genial; aunque si quisiera, no tengo más que hacer los <tt>verify</tt> que también haría con los otros.</p>
<p><b>Actualización:</b><br />He sacado un rato y he escrito el mismo ejemplo pero con EasyMock.</p>
<pre name="code" class="java"> <a href="http://twitter.com/Test" class="twitter-user-link" title="Test profile on Twitter" target="_blank">@Test</a> public void testComprarUnProductoConEasymock() {  TerminalPuntoDeVenta tpv = new TerminalPuntoDeVenta(100,logger);

  CodigoProducto codigo = new CodigoProducto("FANTA 33CL","1234567890");  DispositivoEscaner mockEscaner = createMock(DispositivoEscaner.class);  mockEscaner.scan();  expectLastCall().andReturn(codigo);  tpv.setEscaner(mockEscaner);

  RepositorioProductos mockRepositorioProductos = createMock(RepositorioProductos.class);  Producto producto = new Producto(codigo);  producto.setPrecio(10);  mockRepositorioProductos.buscarProducto(codigo);  expectLastCall().andReturn(producto);  tpv.setRepositorioProductos(mockRepositorioProductos);

  DispositivoTicket mockImpresora = createNiceMock(DispositivoTicket.class);  tpv.setImpresora(mockImpresora);

  replay(mockEscaner);  replay(mockImpresora);  replay(mockRepositorioProductos);

  tpv.iniciarCompra();  tpv.scan();  tpv.finalizarCompra();  double resultado = tpv.cerrarCaja();  assertEquals(110,resultado,0); }</pre>
</div>
<div class="blogger-post-footer">http://jmbeas.blogspot.com</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.jmbeas.es/2008/12/12/sustitucion-facil-de-colaboradores-con-mockito/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

