如果需要设置返回值,以及验证调用表达式的次数,可以在一个语句中执行此操作吗?
从我可以收集到的,Moq的Setup(SomeExpression).Verifiable()调用Verify(),基本上是一个Verify(SomeExpression, Times.AtLeastOnce)?即它验证表达式只被调用.
这是一个更好地解释问题的例子.对于接口:
interface IFoo
{
int ReturnSomething();
}
Run Code Online (Sandbox Code Playgroud)
以下两个块是否等效(除了第一个将验证标记为可验证的所有设置)?
void Test()
{
var mock = new Mock<IFoo>();
mock.Setup((m) => m.ReturnSomething()).Returns(1).Verifiable();
mock.Verify();
}
Run Code Online (Sandbox Code Playgroud)
和
void Test()
{
var mock = new Mock<IFoo>();
mock.Setup((m) => m.ReturnSomething()).Returns(1);
mock.Verify((m) => m.ReturnSomething(), Times.AtLeastOnce());
}
Run Code Online (Sandbox Code Playgroud)
如果我想验证调用次数(比如两次),这是唯一的方法,其中表达式重复进行安装和验证吗?
void Test()
{
var mock = new Mock<IFoo>();
mock.Setup((m) => m.ReturnSomething()).Returns(1);
mock.Verify((m) => m.ReturnSomething(), Times.Exactly(2));
}
Run Code Online (Sandbox Code Playgroud)
我只是不喜欢打电话给安装和验证.好吧,因为这对AAA来说是一个好主意,换句话说,我不喜欢重复设置和验证的表达式.目前我将表达式存储在变量中并将其传递给每个方法,但感觉不是那么干净.
PS - 上下文用于检查何时更新缓存(explirations等)的测试
我刚刚使用VS 2010安装了Windows服务,使用installutil.exe,cmd提示窗口表示提交阶段已成功完成,但我无法在本地服务文件夹中看到Windows服务.
我在这里想念的是什么?
我使用的是Windows 7和VS 2010
更新:
我卸载了服务(名为service1),将名称更改为有意义的东西,安装了服务(与上面相同的过程),仍然无法在服务浏览器中找到它.
FWIW ...我在属性窗口(文件名值)中重命名了我的service1.cs ..但它仍然在服务浏览器中显示service1.我最后也改变了代码中的值(自动生成的代码)this.serviceInstaller1.ServiceName ="service1";
更新(2) 我创建了一个虚拟Windows服务,并且能够成功安装(它提示我输入域登录ID和密码),我能够在服务浏览器中看到它.
但是,我无法在服务浏览器中看到实际的Windows服务(与我的项目相关).显然我有权限,因为我能够安装虚拟服务.
根据这个网站安装后无法看到Windows服务
我在"HKLM\System\CurrentControlSet\Services"路径中看不到注册表中的服务.
更新(3)
日志文件说
在C:中找不到具有RunInstallerAttribute.Yes属性的公共安装程序.
但是,我在项目解决方案中有一个ProjectInstaller.cs文件.
我补充道
[runInstaller的(真)]
到ProjectInstaller.cs文件,仍然没有运气
任何建议?
我想点击一个按钮,让它在按钮下方显示一个上下文.当我尝试使用pointtoacreen和top和left坐标时,它会一直显示在屏幕的左侧.
有什么建议
我无法找到解决问题的方法.
我找到了许多自定义URL-Sheme的答案,如此(mycoolapp://somepath).
例如,这个插件添加了一个自定义URL-Sheme.
但我不想要一个自定义URL-Sheme,我想要一个像这样的"普通"Url(http://www.mycoolapp.com/somepath).
如果你在浏览器中打开它或者单击超链接,那么它会要求你打开我的应用程序(就像谷歌地图那样).
这个问题可能已经有了答案,但我找不到.
编辑:
如果您不知道我的意思,那么如果您点击Android设备上我的网站链接,那该怎么回事?

只需用我的应用程序选择.
我想创建一个带有两个输入控件(比如名称和地址)的ActiveX接口,如何使用C#创建它?我有一个简单的"Hello world应用程序"但不知道用输入控件创建ActiveX ...
是否可以使用输入控件创建ActiveX?
当我开发我的 ASP.Net 应用程序时,显示以下错误。
错误 CS0266
无法将类型 'System.Linq.IQueryable' 隐式转换为 'Microsoft.EntityFrameworkCore.Query.IIncludableQueryable' 存在显式转换(检查是否缺少强制转换) urlapp12 C:\Users\mjkpt\source\repos\teststage \urlapp12\urlapp12\Controllers\TagsController.cs 37 活动

t.Urlid并且Urlid都是int。
包含错误的代码如下:
//int id, [Bind("BlogId,Userid,Url,Title")] Blog blog
// GET: Tags
// public async Task<IActionResult> Index()
public async Task<IActionResult> Index(int id, [Bind("Urlid,Userid,UrlStr,Title")] Url blog, int Urlid)
{
/*
return View(await _context.Tag.ToListAsync());
*/
var blogging02Context = _context.Tag.Include(t => t.Blog);
if (!string.IsNullOrEmpty(Urlid.ToString()))
{
blogging02Context = blogging02Context.Where(t => t.Urlid == Urlid);
}
ViewBag.Urlid = Urlid;
return View(await blogging02Context.ToListAsync());
// return View (await _context.Tag.ToListAsync());
} …Run Code Online (Sandbox Code Playgroud) 我想"包装"特定属性的getter函数,该属性是特定类型的一部分.我有一个抽象类,定义如下:
public abstract class MyAbstractClass<T> where T : MyType
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
好吧,假设我有一个类似下面的具体类:
public abstract class MyConcreteClass : MyAbstractClass<MyConcreteType>
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
现在,应该返回getter方法的包装器的helper方法:
private Func<MyAbstractClass<T>, Object> GetPropertyGetter(PropertyInfo property)
{
var instanceType = Expression.Parameter(property.DeclaringType, "i");
// Taking getter's "body".
var getterBody = Expression.Property(instanceType, property);
// Cast to a generic Object.
var body = Expression.TypeAs(getterBody, typeof(Object));
// Build the expression.
var exp = Expression.Lambda<Func<MyAbstractClass<T>, Object>>(body, instanceType);
return exp.Compile();
}
Run Code Online (Sandbox Code Playgroud)
就像预期的那样,我得到以下异常:
"MyConcreteClass"类型的ParameterExpression不能用于"MyAbstractClass <MyConcreteType>"类型的委托参数.
有没有办法"强迫"这种铸造?提前致谢.
我已经在 React-Native 中编码了一段时间,当我需要编写一些原生 Android 代码时。但是,直到我开始使用使用此特定 gradle 任务的库之前,我才看到此 gradle 任务。
该库是一个端到端测试库(detox),它使用此命令"cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd .."来构建.apk将在自动化 e2e 测试中使用的 android 。实际上,它构建了两个 apk,一个是 debug,一个是 AndroidTest,但我不知道后者来自哪里,配置在哪里,或者文档在哪里。
我搜索了一个小时,除了这个非常简短的描述之外没有找到任何东西:
assembleAndroidTest - Assembles all the Test applications.
什么是测试应用程序?
另外,什么是-DtestBuildType=debug?
基本上,我对如何在控制端实现数据绑定感到困惑.
我试图在C#中编写自定义列表控件,它实现了数据绑定.我希望它最终具有与ListView类似的功能,但具有类似于ListBox的接口.
我有一个名为"ListRow"的私有嵌套类,它处理每行的渲染.有一个内部绑定源可以从数据中获取更改,并在必要时使控件无效.现在的问题是我想在ListRow中添加一个复选框,我不确定实现它的最佳方法,以便底层对象的属性得到改变.
大家早上好
我是erlang的新手,但我正在努力设计我在erlang上的第一个项目尽我所能.这里我需要一些关于erlang内存缓存系统的建议.
在我看来,第一选择是mnesia,但我没有任何经验.它符合我的要求吗?我的表现如何?
另一个选项是memcached - 但我担心性能低于mnesia,因为执行了额外的序列化/反序列化,因为memcached守护进程来自另一个OS进程.
任何建议都有帮助:)
c# ×6
winforms ×2
.net ×1
.net-4.0 ×1
activex ×1
android ×1
asp.net ×1
button ×1
cordova ×1
data-binding ×1
detox ×1
erlang ×1
ets ×1
generics ×1
installation ×1
javascript ×1
lambda ×1
linq ×1
mocking ×1
moq ×1
react-native ×1
testing ×1
url-scheme ×1
verify ×1
windows-7 ×1