Open thales-maciel opened 1 year ago
I have the same problem, cannot access to any "global" plugin. I notice that the problem is only in the routes tests, while in plugins it works...
I've notice that the build()
function does not wrap the app plugin (exported in src/app.ts) with fp()
function.
I've tried to apply fp function and I can access all decorators defined from routes tests.
I don't know if this is intentional or not....
I noticed the same, Wrapping the app into fastify-plugin was just randomly removed in #446 with this change https://github.com/fastify/fastify-cli/commit/6dfee4e393573031343c4b932f40c54b7a0f7f65#diff-d422baf24ac606e8462ae86c1d33235f3c9299defa513b127d36661e3d766e9dL20-R24. @Eomm why was this feature removed while confusingly keeping the comment that is clearly no longer correct?
FWIW I found a viable workaround by adding the following to the end of app.js, and then setting process.env.NODE_ENV = "testing"
in test/helpers.js before it calls buildApplication.
if (process.env.NODE_ENV === "testing") {
// Ensure tests can access all decorators
app[Symbol.for("skip-override")] = true;
}
If @Hornwitser found the issue, would you like to send a Pull Request to address this issue? Remember to add unit tests.
I'm not sure how to solve this issue, I'm rather unfamiliar with fastify.
@Eomm I would like to work on this issue.
Go for it!
Any update on this ?
Looking into it, there are perhaps several things to improve here.
I think we should respect more open/close principle and allow users to decorate the app before ready
is called.
Maybe I should create a more general issue about refactoring, to make sure I understand how it (should) works, it could also be a lack of documentation.
Prerequisites
Issue
I've generated the project using the cli and then I modified my app.ts file so that it looks like this:
The problem is that when i try to use the pg plugin inside a test I get an error
Cannot read properties of undefined (reading 'query')
, which makes me believe that the plugin hasn't been registered, but I don't know how to do it.