Ahora, intenta codificar una prueba para que la tienda pueda revelar la lista de publicaciones al resto de la aplicación.
Antes de comenzar, es necesario que comprenda el tipo y la estructura de sus datos en bruto, es decir, los datos que utilizará cuando pruebe el código:
<pre>1234567891011121314151617181920212223242526varPosts=[{ title:'Creating Flux Store driven by tests', author:'cparker', excerpt:'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris at.', published_at:'Nov 12 2019',},{ title:'El más bello borrador jamás hecho por …', author:'cparker', excerpt:'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris at.', published_at:null},{ title:'Best free stock photos', author:'cparker', excerpt:'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris at.', published_at:'Nov 1 2019'},{ title:'Spookiest Halloween trajes', author:'cparker', excerpt:'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris at.', published_at:'Oct 30 2019'}];</pre>
javascript
Utilice los datos anteriores como su base de datos en memoria. La matriz de puestos debe estar disponible cuando la tienda consulte los datos. En una aplicación de la vida real, reemplace esta matriz con su modelo o colección o ambos.
<pre>123456789101112131415161718192021222324252627282930313233var expect =require('chai').expect;var mockery =require('mockery');varPosts=require('./mockedPosts. js');varPostsListStore;describe('Post List Store',function(){beforeEach(function(){ mockery.enable({ warnOnReplace:true, warnOnUnregistered:false, useCleanCache:true,}); mockery.registerMock('./posts. js',Posts);PostsListStore=require('../src/PostsListStore.js');});it('existe',function(){espect(PostsListStore).to. existe;});describe('obtiene los posts publicados',function(){it('devuelve sólo los posts con una fecha publicada',function(){var posts =PostsListStore. getPublishedPosts(); posts.forEach(function(post){expect(post.published_at).to.not.be.null;});});});afterEach(function(){ mockery.disable();});});</pre>
javascript
A continuación, use el siguiente código para que la prueba pase:
<pre>123456789varPosts=require('./posts.js');varPostsListStore={getPublishedPosts:function(){returnPosts.filter(function(post){return post.published_at;});},};</pre>
javascript
Las tiendas proporcionan fundamentalmente un API de sólo lectura. En otras palabras, en teoría, todo, incluyendo la inyección de dependencia, puede ahora abrir una API en el objeto de su prueba. Esto significa que puedes reinyectar un modelo mutado en la tienda y pasar por alto su capacidad.
La guía emplea Mockery, una liberación dinámica que le permite burlarse de los módulos requeridos. Sólo tienes que poner tu matriz de postes burlados en lugar de los requeridos "posts.js".
Otra opción es usar Jest. Sin embargo, Jest se burla de todo. Un mejor enfoque es saber precisamente de qué se está burlando. Burlarse puede ser una señal de que has creado una dependencia en el sujeto de tu prueba. Tales señales pueden ayudar cuando se trata de la confianza de tu prueba.
Ahora puedes recuperar los mensajes publicados. A continuación tienes que ordenarlas por fecha.
Puede pensar en comprobar si la fecha de publicación de cada post&apos es más pequeña que la anterior:
<pre>123456789it('las entradas devueltas se ordenan por fecha',function(){var posts =PostsListStore.getPublishedPosts();var previous_date =newDate(); posts. forEach(function(post){var published_at =newDate(post.published_at);expect(published_at.getTime()).to.be.below(previous_date.getTime()); previous_date = published_at;});});</pre>
javascript
Este no es un enfoque eficiente. Intenta usar una llamada de clasificación en su lugar:
<pre>123456789101112131415varPosts=require('./posts.js');varPostsListStore={getPublishedPosts:function(){var posts =Posts.filter(function(post){retorno post. published_at;}); posts.sort(function(a_post, another_post){returnnewDate(another_post.published_at)-newDate(a_post.published_at);});return posts;}};module.exports=PostsListStore;</pre>
javascript
Has creado la primera característica y has aprendido a burlarte de los datos para probar tu tienda. Pasemos a la siguiente característica.