Comments (12)
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:
- 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.
- Always generate mocks for
*ast.IndexExpr
. This is highly risky as I'm unsure the ways in which this might break. - 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.
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.
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.
Hi @LandonTClipp,
I got logs for ResponseLessUseCase
but not at all for SendEmailVerificationUseCaseInterface
from mockery.
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)
- Mockery mistakenly imports internal packages when running the 'mockery' command HOT 2
- error: package "context" without types was imported
- mockery built with go 1.22~rc2 fails HOT 6
- Running mockery with docker does not work with go 1.22
- Could not run the latest Mockery Docker image with 1.22 codebase HOT 1
- Investigate if we can use `GODEBUG=gotypealias=1` to get around type alias sadness HOT 2
- Logging warning when mock config is orphaned HOT 1
- Variadic function issues. HOT 10
- Files being created even with `dry-run: true` HOT 1
- Discussion: is interface just for mocking a good idea? HOT 1
- Configuration option `inpackage` is not functioning as expected HOT 3
- Incorrect mocks generated when there are multiple interfaces in the same package HOT 6
- Indirect dependency from go-viper includes critical vulnerability CVE-2021-28235
- Using exclude on windows throws an error because of path separator being used, I have raised a PR HOT 1
- Initialize/setup mock via a constructor param HOT 3
- `disable-version-string` not respected in packages config HOT 7
- Feature request: pre-commit hooks HOT 8
- Support empty `.mockery.yaml` config HOT 1
- Allow for No Return Value on Generated Mocks
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mockery.