In order to enable us to create meaningful integration, application, and end-to-end tests, we need to get rid of an actual LLM provider as an external dependency during test runs, or generally in Symfony env "test".
This should be possible on the Neuron AI integration level, through a custom provider:
https://docs.neuron-ai.dev/the-basics/ai-provider#implement-a-custom-provider
Using this approach, we need to implement a "fake", deterministic agent.
The important part is that test code must be able to "seed" this agent, probably even "from the outside" (in case of end-to-end tests), allowing a test to define deterministic behavior, as in "if you receive message A, respond with B, if you receive message C, call tool D, if you receive message E, fail with error F", and so on, which allows testcases to make stable assumptions for the system-under-test.
Furthermore, only the actual LLM-part of the Agent should be faked; tool-calls should still be actual, real tool calls.