<?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>Mockito &#8211; My Shitty Code</title>
	<atom:link href="https://myshittycode.com/tag/mockito/feed/" rel="self" type="application/rss+xml" />
	<link>https://myshittycode.com</link>
	<description>Embracing the Messiness in Search of Epic Solutions</description>
	<lastBuildDate>Fri, 06 Jan 2023 17:19:23 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://myshittycode.com/wp-content/uploads/2022/04/cropped-icon-32x32.png</url>
	<title>Mockito &#8211; My Shitty Code</title>
	<link>https://myshittycode.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">205304208</site>	<item>
		<title>Mockito: Effective Partial Mocking</title>
		<link>https://myshittycode.com/2014/03/13/mockito-effective-partial-mocking/</link>
					<comments>https://myshittycode.com/2014/03/13/mockito-effective-partial-mocking/#respond</comments>
		
		<dc:creator><![CDATA[Shitty Author]]></dc:creator>
		<pubDate>Thu, 13 Mar 2014 18:52:17 +0000</pubDate>
				<category><![CDATA[Programming Language]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Mockito]]></category>
		<guid isPermaLink="false">http://myshittycode.com/?p=382</guid>

					<description><![CDATA[<p>Sometimes, we may only want to partially mock an object to unit test our code. There are several ways to skin this cat, but I&#8217;ll show two straightforward approaches that allow you to obtain the cat fur. PROBLEM Let&#8217;s assume we want to test this service class:- Basically, getComputedValue() sums up getFirstValue() and getSecondValue() and [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://myshittycode.com/2014/03/13/mockito-effective-partial-mocking/">Mockito: Effective Partial Mocking</a> appeared first on <a rel="nofollow" href="https://myshittycode.com">My Shitty Code</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Sometimes, we may only want to partially mock an object to unit test our code. There are several ways to skin this cat, but I&#8217;ll show two straightforward approaches that allow you to obtain the cat fur.</p>



<h2 class="wp-block-heading">PROBLEM</h2>



<p>Let&#8217;s assume we want to test this service class:-</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
public class CalculationService {

    public int getFirstValue() {
        return 1;
    }

    public int getSecondValue() {
        return 2;
    }

    public int getComputedValue() {
        return getFirstValue() + getSecondValue();
    }
}
</pre></div>


<p>Basically, <b>getComputedValue()</b> sums up <b>getFirstValue()</b> and <b>getSecondValue()</b> and returns the value.</p>



<h2 class="wp-block-heading">PARTIAL MOCKING USING <b>mock(&#8230;)</b></h2>



<p>Here&#8217;s an example of using mock object:-</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
CalculationService calculationService = mock(CalculationService.class);
when(calculationService.getFirstValue()).thenReturn(2);
when(calculationService.getSecondValue()).thenReturn(5);

int val = calculationService.getComputedValue();

assertThat(val, is(???));
</pre></div>


<p>What do you think the value for <strong>???</strong> should be?</p>



<p>If you think the value is 7, you are not skinning the cat correctly.</p>



<p>The correct value is 0. In the above example, when we execute <b>calculationService.getComputedValue()</b>, we are actually executing a stub API from the mock object that doesn&#8217;t do anything but to return a default value, which is 0.</p>



<p>The good news is Mockito provides <b>thenCallRealMethod()</b> that allows us to execute the actual method instead. So, to fix this, we do something like this:-</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; highlight: [5]; title: ; notranslate">
CalculationService calculationService = mock(CalculationService.class);
when(calculationService.getFirstValue()).thenReturn(2);
when(calculationService.getSecondValue()).thenReturn(5);

when(calculationService.getComputedValue()).thenCallRealMethod();

int val = calculationService.getComputedValue();

assertThat(val, is(7));
</pre></div>


<h2 class="wp-block-heading">PARTIAL MOCKING USING <b>spy(&#8230;)</b></h2>



<p>Another way to do partial mocking is to use a spy. Here&#8217;s an example:-</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
CalculationService calculationService = spy(new CalculationService());
when(calculationService.getFirstValue()).thenReturn(2);
when(calculationService.getSecondValue()).thenReturn(5);

int val = calculationService.getComputedValue();

assertThat(val, is(7));
</pre></div>


<h2 class="wp-block-heading">WHICH IS A BETTER WAY?</h2>



<p>It is difficult to say which approach is better because it all depends on the object we are testing. My rule of thumb is if we only want to modify the behavior of small chunk of API and then rely mostly on actual method calls, use <b>spy(&#8230;)</b>. Otherwise, use <b>mock(&#8230;)</b>.</p>



<p>In another word, when we start skinning a cat and it starts to bleed like crazy and scratch your face, sometimes, it&#8217;s wise to put down the knife and consider taking a different approach to solve the problem&#8230; metaphorically speaking.</p>
<p>The post <a rel="nofollow" href="https://myshittycode.com/2014/03/13/mockito-effective-partial-mocking/">Mockito: Effective Partial Mocking</a> appeared first on <a rel="nofollow" href="https://myshittycode.com">My Shitty Code</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://myshittycode.com/2014/03/13/mockito-effective-partial-mocking/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">382</post-id>	</item>
		<item>
		<title>MockMvc + Mockito = Epic Tests</title>
		<link>https://myshittycode.com/2014/01/16/mockmvc-mockito-epic-tests/</link>
					<comments>https://myshittycode.com/2014/01/16/mockmvc-mockito-epic-tests/#comments</comments>
		
		<dc:creator><![CDATA[Shitty Author]]></dc:creator>
		<pubDate>Fri, 17 Jan 2014 00:37:22 +0000</pubDate>
				<category><![CDATA[Programming Language]]></category>
		<category><![CDATA[Mockito]]></category>
		<category><![CDATA[Spring MVC Test Framework]]></category>
		<category><![CDATA[Unit Testing]]></category>
		<guid isPermaLink="false">http://myshittycode.com/?p=324</guid>

					<description><![CDATA[<p>Spring Framework 3.2 introduces a very elegant way to test Spring MVC controller using MockMvc. Based on the documentation, there are two ways to configure MockMvc:- The first approach will automatically load the Spring configuration and inject WebApplicationContext into the test. The second approach does not load the Spring configuration. While both options work, my [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://myshittycode.com/2014/01/16/mockmvc-mockito-epic-tests/">MockMvc + Mockito = Epic Tests</a> appeared first on <a rel="nofollow" href="https://myshittycode.com">My Shitty Code</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><a href="http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/testing.html#spring-mvc-test-framework" target="_blank" rel="noopener">Spring Framework 3.2</a> introduces a very elegant way to test Spring MVC controller using <code>MockMvc</code>.</p>



<p>Based on the documentation, there are two ways to configure <code>MockMvc</code>:-</p>



<ul class="wp-block-list">
<li><code>MockMvcBuilders.webAppContextSetup(webApplicationContext).build()</code></li>



<li><code>MockMvcBuilders.standaloneSetup(controller).build()</code></li>
</ul>



<p>The first approach will automatically load the Spring configuration and inject <code>WebApplicationContext</code> into the test. The second approach does not load the Spring configuration.</p>



<p>While both options work, my preference is to use the second approach that doesn&#8217;t load the Spring configuration. Rather, I use Mockito to mock out all the dependencies within the controller.</p>



<h2 class="wp-block-heading">EXAMPLE</h2>



<p>Let&#8217;s assume we want to test this controller:-</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
@Controller
@RequestMapping(value = &quot;/comment/{uuid}&quot;)
public class CommentController {

    @Autowired
    private RequestService requestService;

    @Autowired
    private CommentValidator validator;

    @InitBinder(&quot;commentForm&quot;)
    protected void initBinder(WebDataBinder binder) {
        binder.setValidator(validator);
    }

    @RequestMapping(method = RequestMethod.POST)
    public String saveComment(@PathVariable String uuid,
                              @Valid @ModelAttribute CommentForm commentForm,
                              BindingResult result,
                              Model model) {

        RequestComment requestComment = requestService.getRequestCommentByUUID(uuid);

        if (requestComment == null) {
            return &quot;redirect:/dashboard&quot;;
        }

        if (result.hasErrors()) {
            return &quot;comment&quot;;
        }

        return &quot;ok&quot;;
    }
}
</pre></div>


<h2 class="wp-block-heading">SETTING UP TEST FILE</h2>



<p>To test <code>/comment/{uuid} POST</code>, we need three tests:-</p>



<ul class="wp-block-list">
<li><code>requestComment</code> is null, which returns <code>redirect:/dashboard</code> view.</li>



<li>Form validation contains error, which returns <code>comment</code> view.</li>



<li>Everything works fine, which returns <code>ok</code> view.</li>
</ul>



<p>The test file looks something like this:-</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
public class CommentControllerTest {

    @Mock
    private RequestService requestService;

    @Mock
    private CommentValidator validator;

    @InjectMocks
    private CommentController commentController;

    private MockMvc mockMvc;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);

        mockMvc = MockMvcBuilders.standaloneSetup(commentController).build();

        when(validator.supports(any(Class.class))).thenReturn(true);
    }

    @Test
    public void testSaveComment_RequestCommentNotFound() throws Exception {
		...
    }

    @Test
    public void testSaveComment_FormError() throws Exception {
		...
    }

    @Test
    public void testSaveComment_NoError() throws Exception {
		...
    }
}
</pre></div>


<p>Because the controller has two dependencies ( <code>RequestService</code> and <code>CommentValidator</code> ) injected into it through Spring autowiring, we are going to create these two mocks and inject them into the controller by annotating them with Mockito&#8217;s <code>@Mock</code> and <code>@InjectMocks</code> accordingly.</p>



<p>In <code>setup(...)</code> method, the first line initializes objects annotated with <code>@Mock</code>. The second line initializes <code>MockMvc</code> without loading Spring configuration because we want the flexibility to mock the dependencies out using Mockito. The third line instructs the validator to return <code>true</code> when <code>validator.support(...)</code> is invoked. If the third line is left out, you will get this exception when <code>binder.setValidator(validator)</code> in the <code>controller.initBinder(...)</code> is invoked:-</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
org.springframework.web.util.NestedServletException: Request processing failed;
nested exception is java.lang.IllegalStateException: Invalid target for Validator
&#x5B;validator]: com.choonchernlim.epicapp.form.CommentForm@1a80b973
</pre></div>


<p>Finally, we have three stubs to test the conditions defined earlier.</p>



<h2 class="wp-block-heading">TEST CASE 1: <code>requestComment</code> is null</h2>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
public class CommentControllerTest {

	...

    @Test
    public void testSaveComment_RequestCommentNotFound() throws Exception {
        when(requestService.getRequestCommentByUUID(&quot;123&quot;)).thenReturn(null);

        mockMvc.perform(post(&quot;/comment/{uuid}&quot;, &quot;123&quot;))
                .andExpect(status().isMovedTemporarily())
                .andExpect(view().name(&quot;redirect:/dashboard&quot;));
    }
}
</pre></div>


<p>The first test is rather easy. All we need to do is to instruct <code>requestService.getRequestCommentByUUID(...)</code> to return null when it is invoked.</p>



<h2 class="wp-block-heading">TEST CASE 2: Form validation contains error</h2>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
public class CommentControllerTest {

	...

    @Test
    public void testSaveComment_FormError() throws Exception {
        when(requestService.getRequestCommentByUUID(&quot;123&quot;)).thenReturn(new RequestComment());

        doAnswer(new Answer() {
            @Override
            public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
                Errors errors = (Errors) invocationOnMock.getArguments()&#x5B;1];
                errors.reject(&quot;forcing some error&quot;);
                return null;
            }
        }).when(validator).validate(anyObject(), any(Errors.class));

        mockMvc.perform(post(&quot;/comment/{uuid}&quot;, &quot;123&quot;))
                .andExpect(status().isOk())
                .andExpect(view().name(&quot;comment&quot;));
    }
}
</pre></div>


<p>The second test is a little complicated. We need to instruct <code>requestService.getRequestCommentByUUID(...)</code> to return a <code>RequestComment</code> object. Then, we use Mockito&#8217;s <code>doAnswer(...)</code> to set a dummy error value to <code>Errors</code> object, which is the second argument of <code>validator.validate(...)</code>. Setting this value will cause <code>result.hasErrors()</code> to evaluate to <code>true</code>.</p>



<h2 class="wp-block-heading">TEST CASE 3: Everything works fine</h2>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
public class CommentControllerTest {

	...

    @Test
    public void testSaveComment_NoError() throws Exception {
        when(requestService.getRequestCommentByUUID(&quot;123&quot;)).thenReturn(new RequestComment());

        mockMvc.perform(post(&quot;/comment/{uuid}&quot;, &quot;123&quot;))
                .andExpect(status().isOk())
                .andExpect(view().name(&quot;ok&quot;));
    }
}
</pre></div>


<p>The third test is rather easy too. We need to instruct <code>requestService.getRequestCommentByUUID(...)</code> to return a <code>RequestComment</code> object&#8230; and that&#8217;s it.</p>



<h2 class="wp-block-heading">CONCLUSION</h2>



<p>See&#8230; it&#8217;s not really that hard. The combination of Mockito and Spring Test Framework 3.2 provides us a great flexibility to test our Spring MVC controllers. Granted, we should already have our unit tests for the two dependencies ( <code>RequestService</code> and <code>CommentValidator</code> ) already. So, it is safe to alter the behavior of these dependencies using Mockito to test every possible path in the controller.</p>
<p>The post <a rel="nofollow" href="https://myshittycode.com/2014/01/16/mockmvc-mockito-epic-tests/">MockMvc + Mockito = Epic Tests</a> appeared first on <a rel="nofollow" href="https://myshittycode.com">My Shitty Code</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://myshittycode.com/2014/01/16/mockmvc-mockito-epic-tests/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">324</post-id>	</item>
		<item>
		<title>How to Unit Test Spring MVC Controller</title>
		<link>https://myshittycode.com/2013/10/23/how-to-unit-test-spring-mvc-controller/</link>
					<comments>https://myshittycode.com/2013/10/23/how-to-unit-test-spring-mvc-controller/#comments</comments>
		
		<dc:creator><![CDATA[Shitty Author]]></dc:creator>
		<pubDate>Wed, 23 Oct 2013 20:23:01 +0000</pubDate>
				<category><![CDATA[Programming Language]]></category>
		<category><![CDATA[Hamcrest]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Mockito]]></category>
		<category><![CDATA[Spring MVC Test Framework]]></category>
		<category><![CDATA[Unit Testing]]></category>
		<guid isPermaLink="false">http://myshittycode.com/?p=170</guid>

					<description><![CDATA[<p>SCENARIO Let&#8217;s assume we have the following controller that needs to be tested:- SOLUTION 1: &#8220;Works but It Won&#8217;t Get You the Promotion&#8221; This working solution relies on:- While this solution works, but it has a few problems. This test case strictly tests the actual controller API, but it completely disregards the URI and request [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://myshittycode.com/2013/10/23/how-to-unit-test-spring-mvc-controller/">How to Unit Test Spring MVC Controller</a> appeared first on <a rel="nofollow" href="https://myshittycode.com">My Shitty Code</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">SCENARIO</h2>



<p>Let&#8217;s assume we have the following controller that needs to be tested:-</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
@Controller
@RequestMapping(value = &quot;/person&quot;)
public class PersonController {

    private PersonService personService;

    @Autowired
    public PersonController(PersonService personService) {
        this.personService = personService;
    }

    @RequestMapping(value = &quot;/{id}&quot;, method = RequestMethod.GET)
    public String getPerson(@PathVariable Long id, Model model) {
        model.addAttribute(&quot;personData&quot;, personService.getPerson(id));
        return &quot;personPage&quot;;
    }
}
</pre></div>


<h2 class="wp-block-heading">SOLUTION 1: <em>&#8220;Works but It Won&#8217;t Get You the Promotion&#8221;</em></h2>



<p>This working solution relies on:-</p>



<ul class="wp-block-list">
<li>JUnit &#8211; General unit test framework.</li>



<li>Mockito &#8211; To mock <b>PersonService</b>.</li>
</ul>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
public class PersonControllerTest {

    @Test
    public void testGetPerson() {

        PersonService personService = mock(PersonService.class);

        when(personService.getPerson(1L)).thenReturn(new Person(1L, &quot;Chuck&quot;));

        PersonController controller = new PersonController(personService);

        Model model = new ExtendedModelMap();

        String view = controller.getPerson(1L, model);

        assertEquals(&quot;View name&quot;, &quot;personPage&quot;, view);

        Person actualPerson = (Person) model.asMap().get(&quot;personData&quot;);

        assertEquals(&quot;matching ID&quot;, Long.valueOf(1), actualPerson.getId());
        assertEquals(&quot;matching Name&quot;, &quot;Chuck&quot;, actualPerson.getName());
    }
}
</pre></div>


<p>While this solution works, but it has a few problems. This test case strictly tests the actual controller API, but it completely disregards the URI and request method (GET, POST, PUT, DELETE, etc). For instance:-</p>



<ul class="wp-block-list">
<li>What if the URI has a typo ( <b>/persn/1</b> ) or it is not properly constructed ( <b>/person/donkey-kong</b> )?</li>



<li>What if the request method should be a <b>POST</b> but we accidentally used a <b>GET</b>?</li>
</ul>



<h2 class="wp-block-heading">SOLUTION 2: <em>&#8220;A Mind Blowing Solution that Still Won&#8217;t Get You the Promotion but You Feel So Invincible That You Feel Compelled to Flip a Table Over&#8221;</em></h2>



<p>This better solution relies on:-</p>



<ul class="wp-block-list">
<li>JUnit &#8211; General unit test framework.</li>



<li>Mockito &#8211; To mock <b>PersonService</b>.</li>



<li>Spring MVC Test Framework &#8211; To properly test the controller.</li>



<li>Hamcrest &#8211; To clean way to assert the actual result is correct.</li>
</ul>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
@RunWith(SpringJUnit4ClassRunner.class)
// This XML configuration basically enable component scanning.
// You could have used @Configuration and @ComponentScan to do the same thing.
@ContextConfiguration({&quot;classpath*:spring-test.xml&quot;})
public class PersonControllerTest {

    @Mock
    private PersonService personService;

    @InjectMocks
    private PersonController personController;

    private MockMvc mockMvc;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
        mockMvc = MockMvcBuilders.standaloneSetup(personController).build();
    }

    @Test
    public void testGetPerson() throws Exception {
        when(personService.getPerson(1L)).thenReturn(new Person(1L, &quot;Chuck&quot;));

        mockMvc.perform(get(&quot;/person/{id}&quot;, 1L))
                .andExpect(status().isOk())
                .andExpect(view().name(&quot;personPage&quot;))
                .andExpect(model().attribute(&quot;personData&quot;,
                                             allOf(hasProperty(&quot;id&quot;, is(1L)),
                                                   hasProperty(&quot;name&quot;, is(&quot;Chuck&quot;)))));
    }
}
</pre></div>


<p>Basically object that is annotated with <b>@Mock</b> will get injected into object that is annotated with <b>InjectMocks</b>. Then, we rely on Spring MVC Test Framework&#8217;s <b>MockMvc</b> to test our controller in a very clean and detailed fashion.</p>



<p>Okay, you may flip a table over now&#8230;</p>



<h3 class="wp-block-heading">By the way&#8230;</h3>



<p>You need at least Spring 3.2 to use <b>MockMvc</b>.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: xml; title: ; notranslate">
&lt;dependency&gt;
	&lt;groupid&gt;org.springframework&lt;/groupid&gt;
	&lt;artifactid&gt;spring-test&lt;/artifactid&gt;
	&lt;version&gt;3.2.4.RELEASE&lt;/version&gt;
	&lt;scope&gt;test&lt;/scope&gt;
&lt;/dependency&gt;
</pre></div>


<p>If you are using an older Mockito version, you will get this error:-</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
org.mockito.exceptions.base.MockitoException: Field &#039;personController&#039; annotated with @InjectMocks is null.
Please make sure the instance is created *before* MockitoAnnotations.initMocks();
Example of correct usage:
   class SomeTest {
      @InjectMocks private Foo foo = new Foo();

      @Before public void setUp() {
         MockitoAnnotations.initMock(this);
</pre></div>


<p>Upgrading Mockito to the latest version will fix this error:-</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: xml; title: ; notranslate">
&lt;dependency&gt;
	&lt;groupid&gt;org.mockito&lt;/groupid&gt;
	&lt;artifactid&gt;mockito-core&lt;/artifactid&gt;
	&lt;version&gt;1.9.5&lt;/version&gt;
	&lt;scope&gt;test&lt;/scope&gt;
&lt;/dependency&gt;
</pre></div><p>The post <a rel="nofollow" href="https://myshittycode.com/2013/10/23/how-to-unit-test-spring-mvc-controller/">How to Unit Test Spring MVC Controller</a> appeared first on <a rel="nofollow" href="https://myshittycode.com">My Shitty Code</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://myshittycode.com/2013/10/23/how-to-unit-test-spring-mvc-controller/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">170</post-id>	</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Lazy Loading (feed)
Database Caching 52/67 queries in 0.031 seconds using Disk

Served from: myshittycode.com @ 2026-02-21 07:53:54 by W3 Total Cache
-->