Tag: unit testing模拟

使用UI控件的unit testing方法

我目前正在编写一些方法,对表单控件进行一些基本操作,例如Textbox,Groupbox,这些操作是通用的,可以在任何应用程序中使用。 我开始编写一些unit testing,只是想知道我应该使用System.Windows.Forms中的实际表单控件,还是应该模拟我试图测试的部分。 例如: 假设我有这个控制方法,如果它是一个文本框,它将清除文本属性,如下所示: public static void clearall(this Control control) { if (control.GetType() == typeof(TextBox)) { ((TextBox)control).Clear(); } } 然后我想测试这个方法,所以我做这样的事情: [TestMethod] public void TestClear() { List listofcontrols = new List(); TextBox textbox1 = new TextBox() {Text = “Hello World” }; TextBox textbox2 = new TextBox() { Text = “Hello World” }; TextBox textbox3 = […]

XNA模拟Game对象或解耦你的游戏

如果可以模拟一个Game对象来测试我的DrawableGameComponent组件,我就会徘徊? 我知道模拟框架需要一个接口才能运行,但我需要模拟实际的Game对象。 编辑:这是XNA社区论坛上各自讨论的链接 。 有帮助吗?

如何制作System.Net.Mail MailMessage的模型?

所以我的代码中有一些SMTP内容,我正在尝试对该方法进行unit testing。 所以我一直在尝试使用Mockup MailMessage,但它似乎永远不会起作用。 我认为没有一种方法是虚拟的或抽象的,所以我不能使用moq来模拟它:(。 所以我想我必须亲自去做,这就是我被困住的地方。 *手动我的意思是使用界面和包装器,但让moq仍然模拟界面。 我不知道如何编写我的接口和我的Wrapper(一个将实现具有实际MailMessage代码的接口的类,因此当我的真实代码运行时它实际上完成了它需要做的事情)。 所以首先我不确定如何设置我的界面。 让我们来看看我必须模拟的其中一个字段。 MailMessage mail = new MailMessage(); mail.To.Add(“test@hotmail.com”); 所以这是我要假装的第一件事。 所以看着它我知道“To”是一个属性,通过命中F12而不是“To”它需要我这一行: public MailAddressCollection To { get; } 所以它是MailAddressCollection属性。 但有些我怎么被允许进一步做“添加”。 所以现在我的问题是在我的界面中我做了什么? 我要做房产吗? 该属性应该是MailAddressCollection吗? 或者我应该有一个像这样的方法? void MailAddressCollection To(string email); or void string To.Add(string email); 那我的包装怎么样? 所以你可以看到我很困惑。 因为有这么多。 我猜我只是模拟我正在使用的那些。 编辑代码 我想在真正意义上我只需要测试更多exception,但我想测试以确保一切都被发送然后它将得到响应=成功。 string response = null; try { MembershipUser userName = Membership.GetUser(user); […]

如何对邮件发送function进行unit testing

我有一个创建报告并将其发送给用户的function。 我所做的是为电子邮件function创建一个模拟器,并validation是否调用了电子邮件类的“发送”function。 所以现在我知道该函数被调用,但是如何对Send()函数的主体进行unit testing呢? 如何certificate主题和正文是正确的并且附件附在电子邮件中?

在c#中使用Moq进行模拟

我有以下代码: public interface IProductDataAccess { bool CreateProduct(Product newProduct); } ProductDataAccess类实现该接口。 public class ProductBusiness { public bool CreateProduct(Product newProduct) { IProductDataAccess pda = new ProductDataAccess(); bool result = pda.CreateProduct(newProduct); return result; } } 在这种情况下,如何通过IProductDataAccess接口为CreateProduct方法创建unit testing? 我想在ProductBusiness中有一个IProductDataAccess的公共实例,并使用Mock对象对其进行初始化,但是将数据访问暴露给UI层并不是一个好习惯。 谁能帮我?

何时使用模拟框架?

所以我正在玩我的unit testing的模拟框架(Moq),并且想知道何时应该使用模拟框架? 以下两个测试之间的好处/缺点是什么: public class Tests { [Fact] public void TestWithMock() { // Arrange var repo = new Mock(); var p = new Mock(); p.Setup(x => x.Id).Returns(1); p.Setup(x => x.Name).Returns(“Joe Blow”); p.Setup(x => x.AkaNames).Returns(new List { “Joey”, “Mugs” }); p.Setup(x => x.AkaNames.Remove(It.IsAny())); // Act var service = new Service(repo.Object); service.RemoveAkaName(p.Object, “Mugs”); // Assert p.Verify(x => […]

Mock HttpContext使用moq进行unit testing

我需要模拟HttpContext进行unit testing。 但我正在努力。 我正在创建一个方法,通过SessionIdManager以编程方式更改sessionId。 而SessionIdManager需要HttpContext而不是HttpContextBase。 但我找不到任何模拟HttpContext的例子。 那里的所有例子都只是制作HttpContextBase。 我在下面试过但是没用 HttpContext httpContext = Mock(); HttpContext httpContext = (HttpContext)GetMockHttpContextBase(); public HttpContextBase GetMockHttpContextBase() { var context = new Mock(); var request = new Mock(); var response = new Mock(); var session = new Mock(); var application = new Mock(); var httpContext = new Mock(); var server = new Mock(); […]

在unit testing中模拟依赖项有什么好处?

我正在为我的控制器和服务层(C#,MVC)进行unit testing。 我正在使用Moq DLL来模拟unit testing中的真实/依赖对象。 但是我对于模拟依赖项或真实对象有点困惑。 让我们举一个下面unit testing方法的例子: – [TestMethod] public void ShouldReturnDtosWhenCustomersFound_GetCustomers () { // Arrrange var name = “ricky”; var description = “this is the test”; // setup mocked dal to return list of customers // when name and description passed to GetCustomers method _customerDalMock.Setup(d => d.GetCustomers(name, description)).Returns(_customerList); // Act List actual = […]

Moq It.Is 不匹配

这段代码: hub.MockedUserRepository.Setup(r => r.Update(It.IsAny())) .Callback((ControllUser usr) => Console.WriteLine(“NULL = ” + (usr.Zombies[0].ConnectionId == null))) .Verifiable(); 会打印 NULL = True 所以我在想使用这种匹配会抓住它: var zombieDisconnectParameterMatcher = It.Is(x => x.Zombies[0].ConnectionId == null); hub.MockedUserRepository.Setup(r => r.Update(zombieDisconnectParameterMatcher)) .Callback((ControllUser usr) => Console.WriteLine(“NULL = ” + (usr.Zombies[0].ConnectionId == null))) .Verifiable(); 但事实并非如此。 为什么?

使用Moq“短路”无效方法?

我的团队最近决定使用Moq作为我们的模拟框架,因为它具有极大的灵活性和高度可读的语法。 由于我们刚接触它,我在看似简单的问题上磕磕绊绊 – 搜索(这里,谷歌等)找到了关于Moq的其他细微差别的大量讨论,但不一定是我所追求的,以及一些看似相关的问题变成了红色的鲱鱼。 我们正在测试一个具有外部依赖关系的类(确切地说是Amazon SimpleDb)但不希望我们的测试绑定到实时连接。 一种特殊的方法: 应用一些“业务”逻辑 如果合适,通过我们构建的提供程序调用SDB的调用,我们称之为SaveItem() 我想对它进行unit testing,以便我们设置所需的上下文并确保SaveItem() ,但是实际上没有调用SaveItem() (因为A)SDB的提供者是一个不是的模拟器完全水合,很可能炸弹和B)我不想为这笔交易付出数百次。) 在处理返回值的方法时,这是微不足道的。 mockDb.Setup(d => d.GiveMeSomething()).Returns(“Foo”); 在我概述的情况下,我的“ SaveItem() ”方法是无效的,因此使用Moq的Returns()方法的选项不可用。 虽然我可以设置一个回调来validationSaveItem()是否被调用,但我似乎无法让它实际上没有做任何事情。 天真/充满希望,我认为以下内容可行,但似乎仍然会调用该方法: mockDb.Setup(d => d.SaveItem(It.IsAny())); 所以百万美元的问题:以下虚构代码的Moq是什么? mockDb.Setup(d => d.SaveItem(It.IsAny())).STOP_RIGHT_HERE();