我有一个接受database *mgo.Database参数的函数.
func myFunc(db *mgo.Database) {
// does some operations with db
}
Run Code Online (Sandbox Code Playgroud)
我想编写一个单元测试并传入一个模拟的db对象,但是我很难搞清楚如何用golang做这个.在其他语言中,我可以使用测试框架来做一个myMock = createMock("Class to Mock"),但使用Go我不知道如何做到这一点.
我瞥了一眼gomock,但不确定这是否是唯一的方法,并且不确定如何使用mgomockgen工具.
我还想过可能编写一个接口,它具有与mgo.Database相同的所有方法,并传递一个使用该接口的"模拟"对象,然后创建一个使用该接口的对象,并将调用传递给mgo的库(类似于一个ORM),但这似乎是很多编码.
来自powershell
Set-Alias msbuild C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
Run Code Online (Sandbox Code Playgroud)
并从与我的sln文件相同的目录运行
> msbuild /nologo /property:DefineConstants=FOO
Run Code Online (Sandbox Code Playgroud)
工作得很好.假设我需要两个构建时间常量.
> msbuild /nologo /property:DefineConstants=FOO;BAR
Run Code Online (Sandbox Code Playgroud)
Powershell将分号解释为语句结束并使用单个常量运行,然后尝试运行命令BAR和错误.所以不是我想要的.
怎么样?
> msbuild /nologo /property:DefineConstants="FOO;BAR"
MSBUILD : error MSB1006: Property is not valid.
Switch: BAR
Run Code Online (Sandbox Code Playgroud)
这也不起作用.不知道这里发生了什么,但它似乎将"FOO; BAR"解释为某种单一的东西 - 而不是两个常数.
所以.我如何实际传入多个常量?
编辑 进一步调查后,我在cmd.exe中运行以下命令
>C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe /nologo /property:DefineConstants=FOO;BAR
MSBUILD : error MSB1006: Property is not valid.
Switch: BAR
Run Code Online (Sandbox Code Playgroud)
虽然这有效
>C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe /nologo /property:DefineConstants="FOO;BAR"
Run Code Online (Sandbox Code Playgroud)