amacgregor

amacgregor

Absinthe TDD Best Practices

Hi Peeps,

I’m looking for best practices, tutorials or any recommendations on how to TDD with Absinthe; there doesn’t seem to be much on terms of testing Absinthe GraphQL APIs even the “Craft GraphQL APIs in Elixir with Absinthe” book seems a little sparse on the subject only showing an example testing against the endpoint.

I’m particularly curious about tests against the schemas and resolvers themselves rather than the actual running endpoint.

Most Liked

benwilson512

benwilson512

Author of Craft GraphQL APIs in Elixir with Absinthe

Hey @amacgregor. Fundamentally the bulk of your application’s API, and consequently the bulk of your testing, should focus on context functions.

Testing resolvers directly is about as feasible as testing controller callbacks directly: Not impossible, but not exactly ergonomic. They are built to be called within the context of Absinthe executing, and so they may depend on values related to Absinthe execution which you then need to recreate. If they suspend then you have to manually un-suspend them and that’s not going to be ergonomic at all.

amacgregor

amacgregor

Hey @benwilson512 , so I should focus the bulk of the testing on the Context and then maybe leave some integration test for testing the actual GraphQL API implementation?

I guess that makes sense, and thanks for the explanation about resolvers; it’s one of those situations where if what I’m trying to do is too hard, then there is probably a better way to do it.

So now let me go back and see if context finally click and feel comfortable for me :smiley: to use.

Where Next?

Popular in Questions Top

_russellb
I want to try my hand at web scraping. What tools/libraries do I need to use. I’m hoping to turn this into something professional so don’...
New
quazar
How to set Jason to encode all fields in ecto schema, I don’t care about security and implementing only is taking long list of attributes...
New
Jim
As a follow up to my earlier question: I have the code compiling and running but not getting a successful login from the rest server. ...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
qwerescape
Is there a way to get the call stack or stack trace at any point in the code? Not from exceptions, but an expression that returns how the...
New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New
wernerlaude
In AR this is so simple @articles = current_user.articles How to do in Ecto? def index(conn, _params) do current_user = conn.assig...
New
skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New

Other popular topics Top

Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1140 51847 244
New
Tee
can someone please explain to me how Enum.reduce works with maps
New
polypush135
As many of you may have realized by now (sorry for all the posts here) I’ve been working on a db problem where I’m trying to aggregate a ...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
vac
Hi, I'm quite new in Elixir and I'm trying to format a string to a PEM format. I have the certificate value like MIIDBTCCAe2...... and ...
New
chrismccord
As promised, the first release candidate of Phoenix 1.3.0 is out! This release focuses on code generators with improved project structure...
New
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
aesmail
Hello guys, I have finally made it. I created an admin interface for a framework. It’s been on my todo list for years and with the curre...
New

We're in Beta

About us Mission Statement