link

link

Hi,

I am very new to elixir, so please forgive my choice of terminology, and if they don’t make sense. Please ask for more details if it can help.

I have a function using GenServer.cast, like below:

def write(some_server, value) do
GenServer.cast(some_server, {:write_value, value})
end

where:

def handle_cast({:write_value, value}, state) do
send_data(value)
{:noreply, state}
end

I call the “write” from another handle_cast:

def handle_cast({:something}, state) do
write(“test”)
{:noreply, state}
end

Now, how can I use assert_receive to verify the :write has happened in the second handle_cast (assuming I am sure the handle_cast is running)?

Thanks

Showing Posts 1 to 3

kokolegorille

kokolegorille

I think :sys.get_state can help You in test by ensuring cast are executed…

Something like that…

      MatchEngine.accept_reply request.uuid, @mock_sender, @mock_receiver
      :sys.get_state ReplyServer
      assert length(MatchEngine.list_of_replies) == 0

You can look at Why is my test failing when I use cast?

gregvaughn

gregvaughn

A little tangent to your question, but I’d consider a simple refactoring. Make the something handle_cast function call send_data directly instead of calling the client write function. It’s unconventional for a genserver to call its own client functions. If you really need your genserver to send itself a message, then I’d prefer to see that more explicit so that the handle_cast for something calls GenServer.cast(self(), {:write_value, "test"}

link

link OP

It is not its own client, it is in another GenServer (I am working on someone else’s project, why it is structured like this is another question)

— All posts loaded —

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
apz
I’m new to elixir and just tried to install the elixirLS extension for VScode(ium) and it is throwing some errors that I would like help ...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews