Tag: tdd

学习BDD,TDD(ruby,C#,javascript)的好资源

学习BDD和TDD的好资源是什么(ruby,C#,javascript)。 现在使用的好框架是什么?

使用Automapper映射ViewModel之后我应该测试什么?

我试图测试控制器的Index操作。 该操作使用AutoMapper将域Customer对象映射到视图模型TestCustomerForm 。 虽然这有效,但我担心测试我从Index操作中获得的结果的最佳方法。 控制器的索引操作如下所示: public ActionResult Index() { TestCustomerForm cust = Mapper.Map(_repository.GetCustomerByLogin(CurrentUserLoginName)); return View(cust); } 它的TestMethod看起来像这样: [TestMethod] public void IndexShouldReturnCustomerWithMachines() { // arrange var customer = SetupCustomerForRepository(); // gets a boiler plate customer var testController = CreateTestController(); // act ViewResult result = testController.Index() as ViewResult; // assert Assert.AreEqual(customer.MachineList.Count(), (result.ViewData.Model as TestCustomerForm).MachineList.Count()); } 在CreateTestController方法中,我使用Rhino.Mocks来模拟客户存储库并将其设置为从SetupCustomerForRepository返回客户。 通过这种方式,我知道当Index操作调用_repository.GetCustomerByLogin(CurrentUserLoginName)时,存储库将返回目标客户。 […]

TDD,DDD和封装

经过几年跟随我工作地点的“建筑师”传下来的不良做法并认为必须有更好的方法,我最近一直在阅读TDD和DDD,我认为原则和实践将是一个非常适合我们编写的软件的复杂性。 但是,我见过的许多TDD示例都在域对象上调用一个方法,然后测试对象的属性以确保正确执行行为。 另一方面,业内几位受人尊敬的人(Greg Young最着名的是关于CQRS的讨论)主张通过删除所有“getters”来完全封装每个域对象。 因此,我的问题是:如果禁止检索域状态,如何测试域对象的function? 我相信我错过了一些基本的东西所以请随时称我为白痴并启发我 – 任何指导都将不胜感激。

“Hello World” – TDD方式?

自从我被介绍到TDD以来,我一直在思考这个问题。 哪个是构建“Hello World”应用程序的最佳方法? 这将在控制台上打印“Hello World” – 使用测试驱动开发。 我的测试会是什么样子? 和什么课程? 请求:没有“ 维基百科 ”链接到TDD是什么,我熟悉TDD。 只是好奇如何解决这个问题。

模拟迭代行为

我有一个迭代行为的界面,我在Rhinomocks模拟它时遇到了麻烦。 示例接口和类是我的问题的一个非常简单的版本。 每次调用LineReader.Read()时,LineReader.CurrentLine()都应该返回一个不同的值 – 下一行。 到目前为止,我还没有能够在模拟中重现这种行为。 因此,它已成为我的一个小业余爱好项目,我不时回到这里。 我希望你能帮助我更进一步。 internal class LineReader : ILineReader { private readonly IList _lines; private int _countOfLines; private int _place; public LineReader(IList lines) { _lines = lines; _countOfLines = lines.Count; _place = 0; } public string CurrentLine() { if (_place<_countOfLines) { return _lines[_place]; } else { return null; } } public […]

如何断言调用了一个动作

我需要资产一个由模拟组件调用的动作。 public interface IDispatcher { void Invoke(Action action); } public interface IDialogService { void Prompt(string message); } public class MyClass { private readonly IDispatcher dispatcher; private readonly IDialogservice dialogService; public MyClass(IDispatcher dispatcher, IDialogService dialogService) { this.dispatcher = dispatcher; this.dialogService = dialogService; } public void PromptOnUiThread(string message) { dispatcher.Invoke(()=>dialogService.Prompt(message)); } } ..and in my test.. [TestFixture] […]

嘲笑Guid.NewGuid()

假设我有以下实体: public class User { public int Id { get; set; } public string Username { get; set; } public Guid UserGuid { get; set; } public Guid ConfirmationGuid { get; set; } } 以下接口方法: void CreateUser(string username); 部分实现应该创建两个新的GUID:一个用于UserGuid ,另一个用于ConfirmationGuid 。 他们应该通过将值设置为Guid.NewGuid()来完成此操作。 我已经使用接口抽象了Guid.NewGuid(): public interface IGuidService { Guid NewGuid(); } 因此,当只需要一个新的GUID时,我可以轻松地模拟它。 但是我不确定如何在一个方法中模拟对同一方法的两个不同的调用,以便它们返回不同的值。

我如何测试void方法?

我有一些无效的方法,我需要测试它们,但我不知道如何做到这一点。 我只知道如何使用Assert测试返回内容的方法。 有人知道怎么做吗? 你们知道这种风格与练习有什么联系吗?

unit testing帮助。 如何测试输出到控制台的消息?

我是unit testing的新手。 如何检查控制台输出? 我有 namespace XXShapes { public abstract class XXShape { public virtual void DrawXXShape() { Console.WriteLine(“The XXShape was drawn.”); } } public class XXCircle : XXShape { public override void DrawXXShape() { Console.WriteLine(“The XXCircle was drawn.”); } } } namespace XXShapes.Test { [TestFixture] public class XXShapeTest { [Test] public void MyFirstTest() { XXShape […]

我应该如何比较两个列表中的每个元素值?

在我的unit testing方法中, 我有两个清单。 一个是expectedValueList ,另一个是actualvalueList 。 expectedValueList={a=1,b=2,c=3,d=4} actualvalueList={d=4,b=2,c=3,a=1} 我这样做只比较一个元素 CollectionAssert.AreEqual(expectedValueList.Select(x => xa).ToList() ,actualvalueList.Select(x => xa).ToList()) 如何比较剩余的元素?