标签: tdd

单元测试ASP.Net MVC 4应用程序

我意识到这是大约20个不同帖子的重复,但它们都不是MVC4特有的,我见过的所有帖子都没有回答我的所有问题.到目前为止,我第一次涉足TDD世界至少可以说令人沮丧.我尝试做的大部分内容似乎与MVC 4不兼容,或者如果没有使用记录不完整的第三方库,我还不太了解.

我希望能够做的是编写一个测试来测试我的控制器动作,他们传递的模型和查看动作正在发送模型.我想测试视图是否存在,我想测试传递的模型是否是视图的正确类型,我想要一些方法来测试它是否会正常处理.我也希望能够测试我的路线.并测试验证过滤器?

我想要一种方法来对ASP.Net MVC进行单元测试,这将使机会很少.

测试Action的Model输出似乎很容易,但测试视图几乎是不可能的.

所以这是我的问题列表:

  1. 一旦我测试了动作并获得了动作结果,我该如何测试以查看它想要的视图是否存在?
  2. 我如何测试我的路线?
  3. 我如何测试以确保正确处理我的观点?
  4. 什么是ASP.Net MVC 4的THOROUGH单元测试真正的"最佳实践"?
  5. 如何进行单元测试表单身份验证?
  6. 如何对动作过滤器进行单元测试?

我更喜欢使用内置的Visual Studio测试项目,但如果我必须使用NUnit,我必须这样做.我只需要确保它正确完成.

提前感谢您的回复.

编辑:我也无法让NUnit使用我的MVC4应用程序,因为有些软件与.NET版本不兼容,其中一个程序集已被编译.

tdd unit-testing visual-studio-2010 visual-studio asp.net-mvc-4

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

Team Foundation Build或TeamCity?

我们是一家从事.NET LOB开发工作的MS商店.我们还为我们的CRM应用程序使用MS Dynamics ...所有开发人员目前都在使用VS/SQL Server 2008.我们也使用VSS,但是每个人都讨厌它在工作中并且很快就会出局.

我们正在开始整个团队的TDD实施计划(〜十几个人).我已经获得TeamCity设置并使用2008 sln构建器成功运行我的第一个自动构建,并使用同事已设置的SVN进行源代码控制分析.在演示管理时,我认为他们开始购买我的蛇油,并提出了调查TFS的建议.

这让我对TDD架构的计划产生了不小的影响.尽管如此,因为我一直认为TFS太昂贵而且对我们的团队来说不值得(而且我在其他商店也看到了相同的情况).我觉得MS在TDD/CI领域已落后多年,第三方产品可能更好,更成熟......我还需要做很多研究,但我想我会来这里看看如果有人实际使用过两个系统.

我意识到TFS包含的内容远远多于构建服务器......但我不想至少故意将这个问题过于宽泛.使用TFS/TFB代替TeamCity的实际利弊是什么 - 例如,我们会失去/获得哪些好处?有没有人在这里实际使用过这两个系统(TFS for TDD/CI和TeamCity/SVN)并且可以从实际的角度说话?

我已经对这个主题做了一些搜索,我在SO上找到的一篇帖子提到TFB的缺点是它只支持MSBuild.我打算在TeamCity上使用FinalBuilder; 看来它也支持TFS ......

谢谢你的建议

编辑:有没有人使用TFS作为他们的Build/CI服务器,可以告诉成功/失败的故事?

tdd teamcity tfs continuous-integration tfsbuild

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

回归测试意味着什么?

有人能以一种可以理解的方式解释回归测试这个词吗?

tdd bdd regression-testing

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

如何在没有界面的情况下模拟一个类?

我正在使用Windows 7中的C#开发.NET 4.0.

我想测试一些使用mock的方法之间的通信.唯一的问题是我想在没有实现接口的情况下这样做.那可能吗?我刚刚阅读了很多关于模拟对象的主题和一些教程,但是它们都用于模拟接口,而不是类.我尝试使用Rhino和Moq框架.

c# tdd mocking

58
推荐指数
7
解决办法
7万
查看次数

使用Jasmine的toHaveBeenCalledWith方法的对象类型

我刚刚开始使用Jasmine,请原谅新手问题但是在使用时是否可以测试对象类型toHaveBeenCalledWith

expect(object.method).toHaveBeenCalledWith(instanceof String);
Run Code Online (Sandbox Code Playgroud)

我知道我可以做到这一点,但它正在检查返回值而不是参数.

expect(k instanceof namespace.Klass).toBeTruthy();
Run Code Online (Sandbox Code Playgroud)

javascript tdd bdd jasmine

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

如何在AngularJs中使用私有方法编写可测试的控制器?

好吧,所以我长期以来一直在绊倒一些问题,我想听听社区其他人的意见.

首先,让我们看一些抽象的控制器.

function Ctrl($scope, anyService) {

   $scope.field = "field";
   $scope.whenClicked = function() {
      util();
   };

   function util() {
      anyService.doSmth();
   }

}
Run Code Online (Sandbox Code Playgroud)

显然我们在这里:

  • 用于控制器的常规脚手架$scope和注入的一些服务
  • 一些字段和功能附加到范围
  • 私人方法 util()

现在,我想在单元测试(Jasmine)中介绍这个课程.但是,问题是我想验证当我单击(调用whenClicked())某个项时util()将调用该方法.我不知道该怎么做,因为在Jasmine测试中我总是得到错误,无论是模拟util()还是没有被调用.

注意:我不是要修复这个特定的例子,我一般都在询问测试这样的代码模式.所以请不要告诉我"究竟是什么错误".我问的是如何做到这一点,而不是如何解决这个问题.

我一直在尝试各种方法:

  • 显然我不能$scope在我的单元测试中使用,因为我没有附加到此对象的此功能(它通常以消息Expected spy but got undefined或类似结尾)
  • 我尝试将这些函数附加到控制器对象Ctrl.util = util;,然后验证模拟,Ctrl.util = jasmine.createSpy()但在这种情况下Ctrl.util没有被调用,因此测试失败
  • 我试图改变util()以附加到this对象并Ctrl.util再次嘲笑,没有运气

好吧,我无法找到解决这个问题的方法,我期待JS忍者的一些帮助,一个工作小提琴将是完美的.

testing tdd angularjs

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

你如何对正则表达式进行单元测试?

我是TDD的新手,我发现RegExp非常特殊.是否有任何特殊的单元测试方法,或者我可以将它们视为常规功能?

regex tdd unit-testing

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

单元测试Scala

我刚刚开始学习Scala语言,并希望在TDD -way中学习.您能否分享一下Scala及其优缺点的单元测试框架的经验.

我正在使用IntelliJ IDEA进行Scala开发,因此能够使用IDE支持运行测试会很不错.

tdd unit-testing scala

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

我为什么要练习测试驱动开发?我应该如何开始?

很多人谈论在开始编写代码之前为代码编写测试.这种做法通常称为测试驱动开发或简称TDD.通过这种方式编写软件可以获得哪些好处?我如何开始这种做法?

testing tdd

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

TDD和测试优先开发(或测试优先编程)之间有区别吗?

这两个想法听起来与我非常相似,但可能存在微妙的差异或完全相同的事情,以不同的方式解释.TDD与测试第一开发/编程之间有什么关系?

testing tdd testing-strategies test-first

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