<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Michael Ruf</title>
    <description>The latest articles on Forem by Michael Ruf (@michiruf).</description>
    <link>https://forem.com/michiruf</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3816593%2F64867c01-8833-46a4-80cf-776b08212719.jpg</url>
      <title>Forem: Michael Ruf</title>
      <link>https://forem.com/michiruf</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/michiruf"/>
    <language>en</language>
    <item>
      <title>Copy-Pasting HTTP Fakes by Hand? Laravel Http Automock Can Do It For You</title>
      <dc:creator>Michael Ruf</dc:creator>
      <pubDate>Tue, 10 Mar 2026 17:43:50 +0000</pubDate>
      <link>https://forem.com/michiruf/copy-pasting-http-fakes-by-hand-laravel-http-automock-can-do-it-for-you-kok</link>
      <guid>https://forem.com/michiruf/copy-pasting-http-fakes-by-hand-laravel-http-automock-can-do-it-for-you-kok</guid>
      <description>&lt;p&gt;If you've spent any time testing Laravel applications that talk to external APIs, you know the drill. You make a real request once, copy-paste the JSON response into a &lt;code&gt;Http::fake()&lt;/code&gt;, and hope it doesn't go stale.&lt;/p&gt;

&lt;p&gt;I built this tool to eliminate that workflow entirely:&lt;br&gt;


&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/michiruf" rel="noopener noreferrer"&gt;
        michiruf
      &lt;/a&gt; / &lt;a href="https://github.com/michiruf/laravel-http-automock" rel="noopener noreferrer"&gt;
        laravel-http-automock
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Automatically mock http requests when testing
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Laravel Http Automock&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/michiruf/laravel-http-automock/actions/workflows/run-tests.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/michiruf/laravel-http-automock/actions/workflows/run-tests.yml/badge.svg" alt="Run Tests"&gt;&lt;/a&gt;
&lt;a href="https://packagist.org/packages/michiruf/laravel-http-automock" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/7d8a40e5a6a905d8aa8683e5f86faaa77e6fe5bac271469a9f45e86aa1fb31b7/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d696368697275662f6c61726176656c2d687474702d6175746f6d6f636b2e737667" alt="Latest Version on Packagist"&gt;&lt;/a&gt;
&lt;a href="https://packagist.org/packages/michiruf/laravel-http-automock" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0744c5ae94c2e6c96e278736b0f737c1ab735a8184cdcc5aae20a428ea9884a2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6d696368697275662f6c61726176656c2d687474702d6175746f6d6f636b2e737667" alt="Total Downloads"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Automatically record and replay HTTP responses in your Laravel tests. On the first test run, real HTTP requests are
made and the responses are saved to disk. On subsequent runs, the saved responses are used instead, no real requests
are made. This makes your tests faster, deterministic, and independent of external services. Automock is fully
compatible with &lt;code&gt;Http::fake()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Requires PHP 8.2+, Laravel 11+, and &lt;a href="https://pestphp.com/" rel="nofollow noopener noreferrer"&gt;Pest&lt;/a&gt;
Works only with Laravel's &lt;a href="https://laravel.com/docs/http-client" rel="nofollow noopener noreferrer"&gt;HTTP client&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick Start&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Installation&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;composer require michiruf/laravel-http-automock --dev&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Optionally publish the config:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;php artisan vendor:publish --tag=&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;http-automock-config&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Usage&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Call &lt;code&gt;Http::automock()&lt;/code&gt; inside your test before executing HTTP requests. Responses will be automatically saved on
the first run and replayed on subsequent runs.&lt;/p&gt;
&lt;div class="highlight highlight-text-html-php notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-en"&gt;it&lt;/span&gt;(&lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;can do stuff with the api&lt;/span&gt;'&lt;/span&gt;, &lt;span class="pl-k"&gt;function&lt;/span&gt; () {
    Http::&lt;span class="pl-en"&gt;automock&lt;/span&gt;()
    &lt;span class="pl-s1"&gt;&lt;span class="pl-c1"&gt;$&lt;/span&gt;response&lt;/span&gt; = Http::&lt;span class="pl-en"&gt;get&lt;/span&gt;(&lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;https://api.sampleapis.com/coffee/hot&lt;/span&gt;'&lt;/span&gt;)-&amp;gt;&lt;span class="pl-en"&gt;json&lt;/span&gt;();
    &lt;span class="pl-en"&gt;expect&lt;/span&gt;(&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/michiruf/laravel-http-automock" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Testing code that depends on external HTTP services is awkward. You've got three options, and none of them are great:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hit the real API every time.&lt;/strong&gt; Your tests are slow, flaky, and dependent on a network connection. Run them in CI and pray the third-party doesn't rate-limit you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Write &lt;code&gt;Http::fake()&lt;/code&gt; manually.&lt;/strong&gt; You capture a response once, hardcode it, and now you're responsible for keeping it in sync with reality forever. This is easy to forget, and when the API changes, your tests still pass but they're just wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Write nothing.&lt;/strong&gt; Skip testing that layer altogether. Not ideal.&lt;/p&gt;

&lt;p&gt;Http Automock takes a different approach, one that feels a lot like snapshot testing. On the first run it makes the real request and saves the response to disk. Every subsequent run replays the saved response.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;Install the package as a dev dependency:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;composer require michiruf/laravel-http-automock &lt;span class="nt"&gt;--dev&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then add a single line to your test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nf"&gt;it&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'fetches hot coffees from the API'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;Http&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;automock&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="nv"&gt;$response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Http&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'https://api.example.com/coffee/hot'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;toHaveCount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first time this test runs, it hits the real API and saves the response to a &lt;code&gt;.mock&lt;/code&gt; file at a path like:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tests/.pest/automock/Feature/CoffeeTest/it_fetches_hot_coffees_from_the_API/1_GET_4c147242.mock&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Every run after that, the mock file is replayed with no network required. The test is fast, deterministic, and still grounded in real data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Is Better Than Manual Fakes
&lt;/h2&gt;

&lt;p&gt;The key insight is that &lt;strong&gt;mock files live in your repository&lt;/strong&gt;. This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Git shows you when APIs change.&lt;/strong&gt; If you renew your mocks and the response diff looks different, that's worth paying attention to.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You get real data confidence.&lt;/strong&gt; The first run is against a live service, so the response structure is guaranteed to be accurate and not something you typed by hand.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Configuration Options Worth Knowing
&lt;/h2&gt;

&lt;p&gt;Http Automock has a set of options to adapt to different workflows. A few I find particularly useful:&lt;/p&gt;

&lt;h3&gt;
  
  
  Preventing real requests
&lt;/h3&gt;

&lt;p&gt;Use &lt;code&gt;preventUnknownRealRequests()&lt;/code&gt; to throw an exception for any request that doesn't have a mock file yet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nc"&gt;Http&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;automock&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;preventUnknownRealRequests&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For maximum strictness, &lt;code&gt;preventRealRequests()&lt;/code&gt; blocks everything, even if mocks exist and you're trying to renew them.&lt;/p&gt;

&lt;p&gt;You almost certainly don't want your CI pipeline hitting live APIs. Therefore you can also set these flags via cli option when running your tests.&lt;/p&gt;

&lt;h3&gt;
  
  
  Renewing / pruning stale mocks
&lt;/h3&gt;

&lt;p&gt;When an API changes its response format, run your tests with &lt;code&gt;renew()&lt;/code&gt; or &lt;code&gt;prune()&lt;/code&gt; to re-fetch everything and overwrite the existing files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nc"&gt;Http&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;automock&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;renew&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Validating mocks against live responses
&lt;/h3&gt;

&lt;p&gt;Want to detect drift without overwriting anything? &lt;code&gt;validateMocks()&lt;/code&gt; makes real requests, compares them to the saved files, and fails the test if they differ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nc"&gt;Http&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;automock&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;validateMocks&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Skipping specific requests
&lt;/h3&gt;

&lt;p&gt;Not everything should be mocked. You can exclude requests by URL pattern, HTTP method, or a custom closure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nc"&gt;Http&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;automock&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;skip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'*oauth.example.com*'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'auth'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nc"&gt;Http&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;automock&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;skipPost&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  &lt;span class="c1"&gt;// Let POST requests through&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Customizing file names
&lt;/h3&gt;

&lt;p&gt;The default filename format is &lt;code&gt;1_GET_4c147242.mock&lt;/code&gt;, a counter, method, and URL hash. If you'd rather have human-readable subdirectories, switch to the &lt;code&gt;url_subdirectory&lt;/code&gt; resolver:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nc"&gt;Http&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;automock&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;resolveFileNameUsing&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'url_subdirectory'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Results in: .../api.example.com/coffee/hot.mock&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also pass a closure for full control:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nc"&gt;Http&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;automock&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;resolveFileNameUsing&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Request&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="nv"&gt;$forWriting&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;method&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;_&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;url&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Persisting response headers
&lt;/h3&gt;

&lt;p&gt;By default, only response bodies are saved. If your code branches on headers like &lt;code&gt;Content-Type&lt;/code&gt; or &lt;code&gt;X-RateLimit-Remaining&lt;/code&gt;, opt in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nc"&gt;Http&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;automock&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;withHeaders&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'Content-Type'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'X-RateLimit-Remaining'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="nc"&gt;Http&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;automock&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;withHeaders&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Save all headers&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  A Note on Compatibility
&lt;/h2&gt;

&lt;p&gt;Http Automock is fully compatible with &lt;code&gt;Http::fake()&lt;/code&gt;. If you have existing tests that mix real and faked requests, it will play nicely with both. You can even use &lt;code&gt;mockHttpFakes()&lt;/code&gt; to capture inline fakes into mock files if you're migrating an existing suite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; PHP 8.2+, Laravel 11+, and &lt;a href="https://pestphp.com/" rel="noopener noreferrer"&gt;Pest&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;The core idea is simple: treat external API responses the same way you treat snapshot tests. Record them once, commit them, and replay them. The difference from snapshot tests is that instead of persisting your outputs/expectations, you're persisting inputs from external services.&lt;/p&gt;

&lt;p&gt;If you're building with Laravel and Pest and tired of babysitting fake data, give it a try.&lt;/p&gt;

&lt;p&gt;Any feedback is welcome.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/michiruf/laravel-http-automock" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Check out the Repo on GitHub&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>testing</category>
      <category>php</category>
      <category>pest</category>
    </item>
  </channel>
</rss>
