Code Monkey home page Code Monkey logo

Comments (5)

LandonTClipp avatar LandonTClipp commented on July 22, 2024 1

Well this is hilarious. The Go AST considers this to be an index expression: *ast.IndexExpr. Mockery does not see SendEmailVerificationUseCaseInterface as an interface type because of this. I can successfully induce mockery to generate a mock for it by telling it to include *ast.IndexExpr the list of types it generates mocks for (currently only interfaces and functions), but I'm not entirely sure on the implications of this. I need to think about it.

There's three ways we could resolve this:

  1. Provide an override in config to force mockery to generate the mock for unusual types like this. This is the least risky but also generates more burden on users who define their types in this way.
  2. Always generate mocks for *ast.IndexExpr. This is highly risky as I'm unsure the ways in which this might break.
  3. Submit a PR to the Go developers asking them to make type declarations that use generic instantiation to appear in the AST as interfaces, not index expressions. This is likely the right long-term solution, but it could take quite a while to gain any traction, if at all.

PR: #790

from mockery.

FournyP avatar FournyP commented on July 22, 2024

Here is my .mockery.yaml config :

with-expecter: true
all: true
filename: "mock-{{ .InterfaceName | kebabcase }}.go"
outpkg: mock{{.PackageName}}
mockname: "{{.InterfaceName}}"
dir: tests/mocks/{{trimPrefix .InterfaceDirRelative "pkg/"}}
packages:
  packageA:
    config:
      recursive: true

from mockery.

LandonTClipp avatar LandonTClipp commented on July 22, 2024

Hmm that's an interesting use case I have not thought of (generic interface with an instantiated type assigned to a different type name). It should work but I'm not sure what mockery thinks of this. Can you run with mockery --log-level debug | grep SendEmailVerificationUseCaseInterface and see what mockery does with it?

from mockery.

FournyP avatar FournyP commented on July 22, 2024

Hi @LandonTClipp,

I got logs for ResponseLessUseCase but not at all for SendEmailVerificationUseCaseInterface

from mockery.

LandonTClipp avatar LandonTClipp commented on July 22, 2024

If mockery did not print anything then something has gone wrong during its discovery phase of top-level interface definitions. I'll see if I can tinker with it.

from mockery.

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.