小编Ska*_*lot的帖子

单元测试mGo

我有一个接受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),但这似乎是很多编码.

unit-testing go

6
推荐指数
1
解决办法
3718
查看次数

具有多个DefineConstants的命令行msbuild

来自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)

msbuild syntax powershell batch-file

2
推荐指数
2
解决办法
2966
查看次数

标签 统计

batch-file ×1

go ×1

msbuild ×1

powershell ×1

syntax ×1

unit-testing ×1