Code Monkey home page Code Monkey logo

Comments (2)

szank avatar szank commented on September 26, 2024

This have been already considered, and might break backwards compatibility, which we want to avoid.
If someone is derererencing the Collection or Query pointers for whatever reason, their code won't compile if you switch the mgo return values to interfaces.

One way to do it is to create a copy of the whole API that uses interfaces, and maintain it alongside the current one. Alas, this is not maintanable IMHO.

from mgo.

domodwyer avatar domodwyer commented on September 26, 2024

Hi @dennypenta

Because of the "builder pattern" of having a method returning it's own concrete type I don't think all methods can be mocked without changing the Query type itself like @szank says.

I'm of the opinion that clients should implement a small interface defining the methods they use rather than use a big one with all the methods available - keeping interface scope small and local to the caller helps avoid unrelated changes breaking things.

Saying that, if you've got a nice idea of how to do this feel free to open a PR and we'll have a look, just be aware of the above :)

Thanks for the help!
Dom

from mgo.

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.