<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="333096" data-post-id="333096">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="murrgelb" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/murrgelb/120/35201_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  murrgelb
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks for all the valuable feedback! I will definitely put some more love into the documentation to make some things easier to understand.</p>
<p>You figured out most of the stuff yourself. Here’s a small recap and some thoughts on your comments</p>
<ul>
<li>We simply use a spec combined with <code>defeffect</code> to define effects. In the body of the <code>defeffect</code> function we define our default (production) behavior</li>
<li>In our code base, we have several occasions where we use <code>defeffect</code> to make side-effects explicit but don’t use it for testing. Making side-effects explicit and call them what they are is one purpose of the library</li>
<li>Yes it is a mocking library but focused on the semantics, that we have side-effects. We don’t talk about config, about how to mock, about technicals. Just side-effects.</li>
<li>Generic automatic tagging is impossible. So … we don’t.</li>
<li>We can test more code async than in e.g. mox, without allowance (see <a href="https://github.com/bravobike/efx/blob/main/test/efx_case_test.exs#L52" rel="noopener nofollow ugc">this test-case</a>), but not all. The processes under test need the test-process to be an ancestor. E.g. in our code-base we need to set async to <code>false</code> if we test oban jobs, since they are located in the supervision tree of the oban application.</li>
</ul>
<p>Again thanks for your feedback, that helps us to improve the library.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="333096" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/efx-a-library-to-declaratively-write-testable-effects/64574/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-333096" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="333096"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="333097" data-post-id="333097">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="murrgelb" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/murrgelb/120/35201_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  murrgelb
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Yes, this feature was introduced in OTP 25. I will put that info into the Readme.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="333097" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/efx-a-library-to-declaratively-write-testable-effects/64574/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-333097" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="333097"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="333260" data-post-id="333260">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="murrgelb" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/murrgelb/120/35201_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  murrgelb
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>We just released a new version (0.1.11) of the library. Taking the feedback seriously, we improved documentation in this release. Furthermore, it is now possible to use the <code>defeffect</code>-macro without parenthesis, in case there are no arguments (credits to <a class="mention" href="/u/sodapopcan" rel="nofollow">@sodapopcan</a> for this one).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="333260" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/efx-a-library-to-declaratively-write-testable-effects/64574/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-333260" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="333260"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="333302" data-post-id="333302">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dimitarvp" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/120/38664_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dimitarvp
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The docs are much better now, thank you.</p>
<p>Another tidbit of feedback: don’t use GitHub links without a commit hash. Just press <kbd>Y</kbd> while visiting the link and it should also add a commit hash to the file + line.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="333302" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/efx-a-library-to-declaratively-write-testable-effects/64574/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-333302" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="333302"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="333387" data-post-id="333387">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="murrgelb" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/murrgelb/120/35201_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  murrgelb
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Cool, didn’t know that! Fixed the test-link in the readme.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="333387" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/efx-a-library-to-declaratively-write-testable-effects/64574/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-333387" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="333387"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="333389" data-post-id="333389">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="matt-savvy" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  matt-savvy
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>This looks very cool</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="333389" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/efx-a-library-to-declaratively-write-testable-effects/64574/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-333389" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="333389"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="335944" data-post-id="335944">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="murrgelb" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/murrgelb/120/35201_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  murrgelb
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>We released some new stuff today (Version 0.2.1):</p>
<ul>
<li><strong>Setup bindings once for all tests</strong><br>
We call these bindings <em>omnipresent</em>. We define them usually in our <code>test_helpers.ex</code>. There is an example in the <a href="https://github.com/bravobike/efx/blob/59509b76009abc62f25df7ca32e144052681ae0b/lib/efx_case.ex#L145" rel="noopener nofollow ugc">EfxCase doc</a>.</li>
<li><strong>Formatter support</strong><br>
Formatters recently added braces around <code>defeffect</code> one-liners (e.g. in <code>defeffect foo, do: "hello"</code>). You can now include the library in your formatter config and have the formatter tamed <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"> (see <code>Usage</code> in Readme).</li>
</ul>
<p>Happy coding!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="335944" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/efx-a-library-to-declaratively-write-testable-effects/64574/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-335944" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="335944"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="335945" data-post-id="335945">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lccezinha" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lccezinha/120/20227_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lccezinha
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hey <a class="mention" href="/u/murrgelb" rel="nofollow">@murrgelb</a> nice job, it seems interesting! I will try to give when I have a chance to do it.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="335945" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/efx-a-library-to-declaratively-write-testable-effects/64574/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-335945" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="335945"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="336985" data-post-id="336985">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="murrgelb" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/murrgelb/120/35201_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  murrgelb
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>We released some minor updates (currently at version 0.2.6):</p>
<ul>
<li><code>defeffect</code> can have guards, now</li>
<li><code>defeffect</code> can have <code>catch</code> and <code>rescue</code> in the body defintion</li>
<li>we introduced <code>delegateeffect</code> which basically behaves like <code>defdelegate</code>. Delegates can be bound in tests, same as functions defined with <code>defeffect</code>. This is a foundation for combining and reusing effects and effect-modules (tbd).</li>
</ul>
<p>It’s very awesome to see this library being used and we’re very grateful for the feedback from you!</p>
<p>Happy coding!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="336985" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/efx-a-library-to-declaratively-write-testable-effects/64574/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-336985" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="336985"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="358260" data-post-id="358260">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="murrgelb" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/murrgelb/120/35201_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  murrgelb
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>We just added some minor features to <code>Efx</code>  0.2.10:</p>
<ul>
<li>We love to <strong>hotfix</strong> our code. <code>Efx</code> now allows to paste code directly into your production environment, if needed. Until now this wasn’t possible, because the hard dependency to <code>Mix.env</code>. We fixed that.</li>
<li>We fell in love with <strong>property based testing</strong>, in our case <code>StreamData</code>. Since uncontrolled and slow side effects are a burden in property based testing, <code>Efx</code> is a obvious choice to bind and control them. However, since <code>Efx</code> works in a process scope and <code>StreamData</code> executes multiple tests in the very same process, binding for each test-case doesn’t work. To enable <code>Efx</code> for property based testing, we introduced <code>with_clean_bindings</code>, which can be used in the body of a propery based test to achieve case dependent bindings: <a href="https://hexdocs.pm/efx/EfxCase.html#module-testing-with-clean-bindings" class="inline-onebox" rel="noopener nofollow ugc">EfxCase — Efx v1.0.1</a></li>
</ul>
<p>Happy hotfixing, testing and coding!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="358260" data-batch-url="/posts/batch_likers">
                        9
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/efx-a-library-to-declaratively-write-testable-effects/64574/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-358260" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="358260"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #20"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/64574/load_more?page=3">Load more posts (4 remaining)</a>
</div></template></turbo-stream>