最近,我开始使用Moq进行单元测试.我使用Moq来模拟我不需要测试的类.
你通常如何处理静态方法?
public void foo(string filePath)
{
File f = StaticClass.GetFile(filePath);
}
Run Code Online (Sandbox Code Playgroud)
怎么可能这个静态方法StaticClass.GetFile()被嘲笑?
PS我很欣赏你推荐的Moq和单元测试的任何阅读材料.
给出以下JavaScript:
var someFunction = function(id) {
//do some stuff
var modifyId = function(id) {
//do some stuff
outer.id = id; //is there any way to modify the id variable in the outer scope from here?
}
}
Run Code Online (Sandbox Code Playgroud)
如何修改从内部函数范围内传递到外部函数作用域的id?
我正在使用VS 2010生成的简单表单,其中包含2个按钮,即启动和停止.使用SetWindowsHookEx启动触发器WH_MOUSE_LL,并停止挂钩.钩子工作正常,我选择"替换"鼠标中键单击双击,我唯一的问题是点击表单的最小化/最大化/关闭按钮,似乎有某种"事件竞赛"之间上面提到的按钮调用的钩子和事件.它反映了这样一个事实:当你按下其中一个按钮时,它会在完成它的动作之前保持"按下"一段时间(例如,形式最小化).当我右键单击表单并选择其中一个操作时,它会立即响应同样的事情,当我停止挂钩并按下上面提到的其中一个按钮时.有没有人遇到过这种行为?
在我看来,这不是如何在Asp.Net MVC中获取当前用户的重复.
我试图找出如何以易于单元测试的方式从ASP.NET MVC模型访问当前用户.这些模型是由SqlMetal生成的LINQ to SQL实体.
我认为我需要知道模型中的当前用户的原因是因为我想根据该用户的权限限制对某些属性/方法的访问.
我愿意采用替代设计,并以干净,单元测试友好的方式进行必要的更改.
我的Web.config文件中有以下部分
<system.webServer>
<!-- For now..... lets be safe and put IE8 in IE7 compatibility mode-->
<httpProtocol>
<customHeaders>
<clear />
<add name="X-UA-Compatible" value="IE=EmulateIE7" />
</customHeaders>
</httpProtocol>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
但是
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
Run Code Online (Sandbox Code Playgroud)
在我的网站上呈现页面的标题中不存在.我按照这篇文章中的建议ASP.NET应用程序 - 设置IE7兼容模式?但它似乎没有按预期使用IE8和IIS6.任何提示?
我创建了以下属性,它抛出InvalidCastException,如果当吸气剂访问ViewState[TOTAL_RECORD_COUNT]了null.
public long TotalRecordCount
{
get { return (long)(ViewState[TOTAL_RECORD_COUNT] ?? -1); }
set { ViewState[TOTAL_RECORD_COUNT] = value; }
}
Run Code Online (Sandbox Code Playgroud)
我的想法是它错误地尝试将对象拆箱ViewState[TOTAL_RECORD_COUNT]到一个int,因为它包含了一个失败long,但我认为这个逻辑可能存在缺陷.我将把它作为练习留给读者指出这个缺陷.
我已经改变了那个属性来阅读
public long TotalRecordCount
{
get { return (long?)ViewState[TOTAL_RECORD_COUNT] ?? -1; }
set { ViewState[TOTAL_RECORD_COUNT] = value; }
}
Run Code Online (Sandbox Code Playgroud)
这只是膨胀.不过,我仍然想知道我的原始版本有什么问题... StackOverflow救援?
请注意,如果我尝试(long)(ViewState[TOTAL_RECORD_COUNT] ?? -1)在立即窗口中执行,我会收到错误消息Cannot unbox 'ViewState[TOTAL_RECORD_COUNT] ?? -1' as a 'long',如果我执行,(ViewState[TOTAL_RECORD_COUNT] ?? -1).GetType().Name我会得到Int32.我可以执行(long)-1并以-1结束Int64......所以这是什么?
c# ×4
asp.net ×1
asp.net-mvc ×1
casting ×1
javascript ×1
mocking ×1
model ×1
moq ×1
mouse-hook ×1
scope ×1
unboxing ×1
unit-testing ×1