Comments (6)
Thanks gkampitakis, I have resolved my issue.
from go-snaps.
Hey 👋 . Thanks a lot for this issue. Could you help me with a reproducible example or more details about your use case ? ( i am not really familiar with the go mock ). I am interested on supporting this use case ( better ?? ) just trying to understand how would that work.
from go-snaps.
Here is a example for the gomock:
func TestHello(t *testing.T) {
t.Run("some test", func(t *testing.T) {
ctrl := gomock.NewController(t)
myStub := NewMockHello(ctrl)
myStub.EXPECT().DoSomething(gomock.Eq("A"), gomock.Any()).Returns(xxx)
})
}
myStub
will replace the original function implementation, and the function in my code will call myStub.DomeSomething("A", "B")
. I need to confirm whether the second argument is "B" instead of using gomock.Any()
, so that I need to write myStub.EXPECT().DoSomething(gomock.Eq("A"), gomock.Eq("B"))
in my test.
This is the simplest case, but if the argument become complex, I need to snaps it and assert it.
So I wrap a simple gomock.Matcher
:
var _ gomock.Matcher = (*mySnaps)(nil)
type mySnaps struct {
t *testing.T
}
func (s mySnaps) Matches(data any) bool {
snaps.MatchSnapshot(s.t, data)
return true
}
func (s mySnaps) String() string {
return "my-snaps"
}
from go-snaps.
That's really clever actually 😅 .
I did a quick test and this seems to work https://github.com/gkampitakis/go-snaps-go-mock, not sure if i miss something.
from go-snaps.
Cool, I get it. So can this be inherited in go-snaps?
from go-snaps.
oh okay i misunderstood, so this is not an issue right ?
but the snapDirAndName getting the real path by the caller. So I have to implement my matcher in each package to ensure that the save path of the snaps are correct.
The request is supporting this inside go-snaps?
var _ gomock.Matcher = (*mySnaps)(nil)
type mySnaps struct {
t *testing.T
}
func EqSnap(t *testing.T) *mySnaps {
return &mySnaps{t}
}
func (s mySnaps) Matches(data any) bool {
// this might not be even needed
s.t.Helper()
snaps.MatchSnapshot(s.t, data)
return true
}
func (s mySnaps) String() string {
return "my-snaps"
}
from go-snaps.
Related Issues (20)
- Issues with diffs HOT 2
- Allow configuration of snapshot file names / ending HOT 2
- Behaviour changed? Secrets now redacted? HOT 2
- Testcase is intially written, but fails on updating the test HOT 3
- go-snaps `permission denied` when running from packagestest HOT 1
- [Feature Request ]: Configurable snapshot file HOT 4
- [Bug]: Cryptic error message for snaps saved using "CRLF" instead of "LF" line ending HOT 3
- [Feature Request ]: Add env variable to error if .snap is missing HOT 3
- [Feature Request]: MatchYAML HOT 1
- [Bug]: snapshots of big slices could not be loaded back HOT 5
- [Feature Request]: Expose ability to update snapshot via the API HOT 2
- Is snapshort sorting a thing? HOT 3
- [Feature Request]: Add docs on path syntax HOT 1
- [Bug]: Nested arrays keys HOT 3
- Snapshots combined with using `-count` HOT 5
- Consider Adding Named Snapshots HOT 2
- Why specify the exact go version (`1.21.0`) HOT 3
- [Bug]: race condition with cleanup and parallel HOT 6
- [Bug]: CRLF not respected in snaps HOT 4
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 go-snaps.