小编cam*_*elt的帖子

MVC 3:如何学习如何使用NUnit,Ninject和Moq进行测试?

我的问题的简短版本:

  1. 任何人都可以指向一些好的,详细的资源,我可以从中学习如何使用NUnit,Ninject 2和Moq在我的MVC 3应用程序中实现测试?
  2. 这里的任何人都可以帮我澄清一下Controller-Repository解耦,模拟和依赖注入是如何协同工作的吗?

我的问题的更长版本:

我想做什么......

我目前正在开始创建一个MVC 3应用程序,它将使用Entity Framework 4,使用数据库第一种方法.我想这样做,所以我试图设计类,层等,以便高度可测试.但是,除了对它们的学术理解之外,我对单元测试或集成测试几乎没有经验.

经过大量的研究,我决定使用

  • NUnit作为我的测试框架
  • Ninject 2作为我的依赖注入框架
  • Moq是我的嘲弄框架.

我知道哪个框架最好的主题,等等,可以进入这个,但在这一点上,我真的不知道任何一个形成一个坚实的意见.所以,我决定采用这些免费的解决方案,这些解决方案似乎很受欢迎并且维护得很好.

到目前为止我学到了什么......

我花了一些时间研究这些东西,阅读资源,如:

从这些资源中,我已经设法满足了对存储库模式的需求,以及存储库接口,以便分离我的控制器和数据访问逻辑.我已经在我的应用程序中写了一些内容,但我承认我不清楚整个事情的机制,以及我是否正在进行这种解耦以支持模拟或依赖注入,或两者兼而有之.因此,我当然不介意听到你这些人的意见.在这一点上我可以获得的任何清晰度都会对我有所帮助.

对我来说事情变得浑浊......

在我开始尝试绕过Ninject之前,我认为我已经很好地掌握了这些东西,如上面引用的构建可测试的ASP.NET MVC应用程序中所述.具体来说,我完全迷失了作者开始描述服务层实现的程度,大约是文档的一半.

无论如何,我现在正在寻找更多的资源来学习,以便尝试围绕这些东西获得各种观点,直到它开始对我有意义.

总结所有这些,将其归结为具体问题,我想知道以下内容:

  1. 任何人都可以指向一些好的,详细的资源,我可以从中学习如何使用NUnit,Ninject 2和Moq在我的MVC 3应用程序中实现测试?
  2. 这里的任何人都可以帮我澄清一下Controller-Repository解耦,模拟和依赖注入是如何协同工作的吗?

编辑:

我刚刚在Github上发现了Ninject官方维基,所以我将开始研究它是否开始为我澄清事情.但是,我仍然对SO社区对所有这些的想法非常感兴趣:)

nunit unit-testing moq ninject-2 asp.net-mvc-3

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

在代码中,在客户端应用程序中创建WCF端点配置?

我试图从.NET客户端应用程序中使用WCF Web服务,我认为我需要能够以编程方式创建端点,但我不知道如何.我想我需要这样做,因为当我尝试运行应用程序时,我收到以下错误:

无法在ServiceModel客户端配置部分中找到引用合同"IEmailService"的默认端点元素.这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此合同匹配的端点元素.

在解决此错误时,我创建了一个简单的Windows窗体应用程序,我尝试使用相同的Web服务.使用此测试应用程序,我可以成功连接到Web服务,并获得有效的响应.但是,我可以在我的测试应用程序中通过从应用程序的app.config文件中删除system.serviceModel节点及其所有子节点来重现上面引用的确切错误(我可能不必删除所有该部分,我是不确定).所以,我的第一个想法是我需要将该部分添加到真实应用程序的app.config文件中,一切都应该没问题.不幸的是,由于荒谬的原因,我不会进入这里,这不是一个选择.所以,我不得不在客户端应用程序内的代码中生成此信息.

我希望有人可以帮助我解决这个问题,或者可以指出我为这类问题寻找一个好的资源.

是否可以在代码中在客户端应用程序中创建端点配置?

wcf web-services endpoints

15
推荐指数
2
解决办法
3万
查看次数

Team Foundation Server 2010:我可以删除分支,但保存其历史记录吗?

在Team Foundation Server 2010中,我为一个我想要临时的主项目创建了一个源代码控制分支.关闭项目后,我想绑定临时分支,将其合并到我的主分支中,然后将其删除.我想删除它只是因为我没有一个临时分支一直闲逛.但是,我不想丢失这个分支的登记历史.

所以,我的问题是我是否可以删除已合并到其他分支的分支而不删除该分支的历史记录?

history branch tfs2010

9
推荐指数
1
解决办法
2362
查看次数

为什么我的MVC项目在发布后不会起作用?

我最近将我的第一个MVC 2项目发布到商业Web服务器上,运行Windows 2008,并据称支持其他MVC站点没有问题,但一直遇到一些问题.这是该项目的高级结构.如您所见,它非常简单:

但是,在网站发布后,我导航到URL,我得到"HTTP错误403.14 - 禁止访问:Web服务器配置为不列出此目录的内容."

所以,我联系了网络主机,并告诉我必须包含一个默认的登陆页面,例如Default.aspx,Index.aspx等.我怀疑这个响应是准确的,因为我认为MVC路由会处理这个问题,但我按照建议做了,在Default.aspx.cs代码隐藏中添加了一个重定向到我的家庭控制器,但得到了一个HTTP错误404.我添加了每个建议的重定向,类似于本文中的建议:http:// www .58bits.com/blog/CommentView,guid,10b2ddfa-057c-41d0-bdc7-564b212ce896.aspx.

我已经和网络主持人一起来回讨论了这个问题超过一个星期,大约有十几个不同的回答和答案,但我还是找不到解决方法.我确信这是一个很容易解决的问题,但我不知道下一步该尝试什么,或者建议接下来尝试的网络托管支持.

Soooo ......知道StackOverflow社区比我聪明,我的网络托管公司的支持技术结合了一千倍,我希望你能帮我解决这个问题,所以我可以成功发布我的项目并且没有错误地访问它.

asp.net asp.net-mvc publish windows-server-2008

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

是什么导致我的C#.NET内存泄漏,在一个闲置的应用程序?

我正在尝试解决应用程序中的一些内存泄漏问题,我真的希望有人在这里可以提供一些有用的见解.我整天都在修补这一点,恐怕我完全陷入了困境.

我正在排除故障的应用程序最初工作正常,但如果在闲置几个小时之后使用它会变得迟缓甚至崩溃.我认为这是由于某种内存泄漏随着时间的推移而变得越来越糟.据我所知,没有内部进程,如计时器或无限循环等,可以解释内存泄漏,但症状是可重现的,所以肯定会发生一些事情.

为了尝试解决这个问题,我下载并安装了.NET Memory Profiler的试用版.不幸的是,我不确定如何解释我得到的结果.据我所知,在我看来最有问题的类是系统类,如System.Version和System.Object [].我想这是基于这样的假设:"要查找的数据"是分析器报告的无法访问的实例数和字节数.

这是一些示例数据,类似于我所看到的:

  1. 命名空间:系统
    • 班级名称:版本
    • 实时实例......
    • 总计:2
    • 达美:0
    • 直播字节......
    • 总计:48
    • 新:48
    • 马克斯:24
    • 达美:0
    • 不可达...
    • 实例:15,556
    • 字节:373,344
  2. 命名空间:系统
    • 类名:对象[]
    • 实时实例......
    • 总计:1,198
    • 达美:0
    • 直播字节......
    • 总计:117,916
    • 新:117,916
    • 最大:7,016
    • 达美:0
    • 不可达...
    • 实例:3,054
    • 字节:204,592

如果我正在读这个权利,我面临的两个最大的问题是我有超过15,000个汇编版本的实例和超过3,000个"无法访问"的对象,但不可否认,我并不完全确定"无法访问"是什么意思.

所以,我的具体问题是:

  • 谁能告诉我,我是否正确读取.Net Memory Profiler数据?
  • 如果我正确地读取数据,那么什么可能导致我的应用程序生成更多的程序集版本实例和更多对象实例,而没有最终用户与之交互?

.net c# memory profiler memory-leaks

3
推荐指数
1
解决办法
1138
查看次数

以文化中立的方式设置Word 2007的行间距

我在Word 2007中设置行间距时遇到问题.Word 2007默认为双倍间距或行之间有额外的空格.以前,我总是使用类似的东西成功(在C#中):

//No spacing when using Word version > 2003
//Word 2003 = "11.0"
//Word 2007 = "12.0"
Word.Application appVersion = new Word.Application();
string sVersion = appVersion.Version.ToString();
if (sVersion != "11.0")
{
    object noSpacingStyle = "No Spacing";
    oWord.ActiveWindow.Selection.set_Style(ref noSpacingStyle);
}
Run Code Online (Sandbox Code Playgroud)

但是,当尝试在一些地区/文化环境中应用它时,例如意大利语和德语,这种情况就会破裂.我相信这是因为"No Spacing"需要使用目标语言,而不是硬编码为英语.所以,我试图想出一种以更便携的方式应用这种相同变化的方法.

我已经尝试过各种枚举,例如"WdBuiltinStyle",但似乎找不到与"无间距"完成相同的事情.

这里有谁知道如何做到这一点?

c# ms-word spacing

3
推荐指数
1
解决办法
5699
查看次数

WCF:我是否需要用动态命名空间替换"http://tempuri.org/"?

我有一个将部署到多个域的Web服务.我想摆脱WCF默认名称空间" http://tempuri.org/ ",并将其替换为部署Web服务的域,例如" http://mydomain.com/".我知道这里最好的解决方案就是让Web服务存在于一个地方,并使用那个域作为命名空间,但这对我来说不是一个选择.

我在这里找到了对这个问题的部分答案.在这篇文章中,建议的答案是在配置文件中设置一个URL属性,但恐怕我不太明白答案.这个URL属性到底在哪里?此外,由于我无法控制的原因,将使用此Web服务的客户端应用程序没有app.config文件,因此该客户端应用程序中的所有配置都必须在代码中设置.我不确定这是否重要,但我想提一下,以防万一.

编辑:澄清一下,我试图删除的" http://tempuri.org " 引用是在svcutil.exe生成的.cs文件中.

例如

[System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IEmailService/SendEmail", ReplyAction = "http://tempuri.org/IEmailService/SendEmailResponse")]
void SendEmail(Services.Internal.CorrespondenceWebService.Email email);
Run Code Online (Sandbox Code Playgroud)

wcf namespaces dynamic

3
推荐指数
1
解决办法
1万
查看次数

与return语句一起使用时,BitWise OR("|")的含义是什么?

在C#.NET中,有没有人在一个看起来像这样的方法中看到一个return语句?

protected override Buttons GetButtonsToShow()
{
    return Buttons.New | Buttons.Return | Buttons.Delete;
}
Run Code Online (Sandbox Code Playgroud)

这个BitWise运算符怎么样"|" 在这里工作?这个陈述的结果是什么?我知道BitWise运算符在if ... else ...语句等方面是如何工作的,但我从未见过它以这种方式使用过.

c# bit-manipulation return

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

什么样的数学将帮助我解决编程问题?

我一直在研究各种编程问题和算法,以提高我的编程和解决问题的能力.但是,我继续遇到像这样的描述:

"设A = [a1,a2,...,an]是整数1,2,...,n的排列.一对索引(i,j),1 <= i <= j <= n ,如果ai> aj,则是置换A的反转.我们给出整数n> 0且k> = 0.包含正好k反转的n元素排列的数量是多少?" (来源:http://www.spoj.pl/problems/PERMUT1/)

为了让这种问题描述对我有意义,我需要学习什么样的数学?

algorithm math

0
推荐指数
1
解决办法
3058
查看次数

为未知列数设计数据表的最佳方法?

我正在尝试构建一个最能支持以下标准的数据表结构:

1)我不知道该表必须有多少列.

  • 在某些情况下我可能需要6列,在其他情况下可能需要10列.我不希望这个表需要20个或更多列,但我也不能保证永远不需要.

2)我需要考虑存储空间和报告速度.

  • 此表将需要存储数百万条记录,并将针对此表运行报告.我知道从报告的角度来看,高度规范化的表很难实现,所以我想对报告进行去规范化.但是,我也不知道为了避免一些规范化而简单地默认为一些大量的列是一个好主意,因为我可能会在表的末尾的许多列中结束大量的NULLS,那些(我认为)会占用一些存储空间.

3)如果我必须在存储空间和报告性能之间做出选择,我会支持性能.

我不是商业智能专家,我不是T-SQL大师(我将使用SQL Server),所以我确实在这里有一些我忽略的优点.因此,我再次转向辉煌的SO社区寻求建议,并且有一些感觉被撞到我厚厚的头骨中.

在这种情况下你会如何设计表?我错过了哪些细节,仍需要考虑?

database reporting

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