Giter VIP home page Giter VIP logo

Comments (5)

joebowbeer avatar joebowbeer commented on July 22, 2024 2

@jmcdo29 yes, I agree, but people like myself will still arrive here looking for a decorator unit test. Hopefully they will find this issue and your comment.

from testing-nestjs.

jmcdo29 avatar jmcdo29 commented on July 22, 2024

It sounds like this is not a decorator created with Nest's createParamDecorator, for controllers, resolvers, and gateways, but a general typescript decorator, is that correct?

from testing-nestjs.

achyutjhunjhunwala avatar achyutjhunjhunwala commented on July 22, 2024

Yes, it is a custom Decorator that consumes Redis for caching data, it creates a key based on the method name and passed arguments to the function. Its like memoization decorator for Service Methods

from testing-nestjs.

joebowbeer avatar joebowbeer commented on July 22, 2024

I was looking for a sample of a unit test for a param decorator, and suggest you include one here for completeness.

AFAICT, the best way to test a param decorator is to test the factory (CustomParamFactory), that is passed to createParamDecorator, in isolation. To test the ParameterDecorator itself would require a lot of scaffolding.

nestjs/nest#1020 (comment)

from testing-nestjs.

jmcdo29 avatar jmcdo29 commented on July 22, 2024

Honestly, I would worry about testing a custom decorator via integration and e2e tests that use actual HTTP requests. If you do want to have an easy way to test the factory inside the decorator you'd need to do something like

export const myParamFactory = (data:  unknown, context: ExecutionContext) => {
  return context.switchToHttp().getRequest()['custom-property'];
}

export const MyParam = createParamDecorator(myParamFactory);

And now you can just call myParamFactory directly in a test while mocking the ExecutionContext. I'll see about adding a sample for this, or feel free to create one with this knowledge and open a PR

from testing-nestjs.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.