What is GoMock?

Overview of a mocking framework for Go with code examples
16 August 2017   2959

GoMock is a mocking framework for the Go programming language. It integrates well with Go's built-in testingpackage, but can be used in other contexts too.


Run these commands to install the gomock package and the mockgen tool:

go get github.com/golang/mock/gomock
go get github.com/golang/mock/mockgen

Four steps of GoMock usage:

  1. Use mockgen to generate a mock for the interface you wish to mock.
  2. In your test, create an instance of gomock.Controller and pass it to your mock object’s constructor to obtain a mock object.
  3. Call EXPECT() on your mocks to set up their expectations and return values
  4. Call Finish() on the mock controller to assert the mock’s expectations

mockgen has two modes of operation: source and reflect. Source mode generates mock interfaces from a source file. It is enabled by using the -source flag. Other flags that may be useful in this mode are -imports and -aux_files.


mockgen -source=foo.go [other options]

Reflect mode generates mock interfaces by building a program that uses reflection to understand interfaces. It is enabled by passing two non-flag arguments: an import path, and a comma-separated list of symbols.


mockgen database/sql/driver Conn,Driver

Learn more at GiHub and with tutorial

Git LFS 2.5.0 to be Available

It replaces large files with text links, and their contents are stored on GitHub Enterprise servers
31 July 2018   159

The GitHub developers have updated the Git LFS extension. It replaces large files with text links, and their contents are stored on GitHub Enterprise servers. The new version fixes bugs and added new features to the old commands. 

New migration options

The git lfs migrate command received several new functions.

  • Fixing the inability to save in the repository using Git LFS. If the file is larger than 100 MB, it does not move to GitHub and the history requires rewriting with the git lfs migrate import command. If the file is less than 100 MB, the git lfs migrate import --no-rewrite command will move the file using the extension, fixing the changes in the repository.
  • Correcting the error of storing files with the extension LFS. For example, you need to store images * .png with LFS, and the file is added without using it. git lfs migrate import --fixup helps to fix the error. The--fixup flag reads the condition in the .gitattributes file and automatically converts the objects for storage using Git LFS. In the example below, the mona.png file is added without Git LFS:
$ cat .gitattributes
*.png filter=lfs diff=lfs merge=lfs -text

$ git cat-file -p :mona.png | file -s
/dev/stdin: PNG image data, 896 x 896, 8-bit/color RGBA, non-interlaced

You can fix it this way:

$ git lfs migrate import --fixup
migrate: Fetching remote refs: ..., done
migrate: Sorting commits: ..., done
migrate: Rewriting commits: 100% (2/2), done
  master        1002728154804338fe645976ad8b7258b0be0810 -> 076e2bfe114df5575b1130f694c18d1b26c86b86
migrate: Updating refs: ..., done
migrate: checkout: ..., done

$ git cat-file -p :mona.png
version https://git-lfs.github.com/spec/v1
oid sha256:49afbfc61b10df78377f8f7dac774158e1a0197740e160ea3572d9839c61ac04
size 106277

Now mona.png is in the repository using the LFS repository.

To stop working with the expansion and export of large objects, it is enough to type git lfs migrate export. The command accepts the same arguments asgit lfs migrate import, moving files from the extension.

Other changes

Modified scripts and programs that can be used to design as "crutches." Now the testing software package outputs the results in TAP format and is started by the prove command. And the assembly of the project can be done thanks to Makefile, the familiar Git users.

In addition, the fixes and improvements to support for alternative objects, as well as the output of results from subdirectories by the git lfs status command.