Tag: moq

拥有受保护的二传手的Moq财产

我想要Moq下一个对象: abstract class Foo { public string Bar { get; protected set; } } 所以new Mock().Bar返回”Blah” 。 我怎样才能做到这一点? fooMock.SetupGet(s => s.Bar).Returns(“Blah”); 投 失败:System.NotSupportedException:非虚拟成员上的设置无效:s => s.Date 和 fooMock.Protected().SetupGet(“Bar”).Returns(“Blah”); 投 要指定公共属性StatementSection.Date的设置,请使用类型化重载

在不使用魔术字符串的情况下将参数传递给FakeItEasy-mock?

在过去的几年里,我一直在使用Moq来满足我的嘲笑需求,但在看了FakeItEasy之后我想尝试一下。 我经常想测试一个方法是否使用正确的参数调用,但我发现没有令人满意的方法来使用FakeItEasy。 我有以下代码来测试: public class WizardStateEngine : IWizardStateEngine { private readonly IWorkflowInvoker _workflowInvoker; private List _history; public WizardStateEngine(IWorkflowInvoker workflowInvoker) { _workflowInvoker = workflowInvoker; } public void Initialize(List history) { _history = history; } public WizardStateContext Execute(Command command, WizardStateContext stateContext, CustomBookmark step) { Activity workflow = new MyActivity(); var input = new Dictionary(); input[“Action”] = command; […]

Mock.Of VS Mock ()

我目前对如何模仿感到困惑。 我正在使用Moq。 为了模拟对象,我通常以这种方式编写 var mockIRepo = new Mock(); 但是,我需要为我的设置创建模拟对象。 Option1以这种方式模拟仅包含属性的对象是否更好? var object = Mock.Of() Option2或者这样 var object = new Mock() 我已经读过选项2有setupproperties这对我来说有点问题,因为我也可以在选项1中设置属性。 那有什么区别? 或者,还有更好的方法?

模拟Moq中受测试对象的方法?

我想测试我的类的方法A,但是没有调用通常由A调用的实际方法B.那是因为B有很多外部交互,我现在不想测试。 我可以为B调用的所有服务创建模拟,但这是相当有用的。 我宁愿只是模拟B并让它返回样本数据。 这可能与Moq框架有关吗?

xUnit和Moq不支持async – 等待关键字

我试图发现如何将async和await关键字应用于我的xUnit测试。 我使用的是xUnit 1.9和Async CTP 1.3。 这是我的测试用例 我有一个接口,它指定一个异步方法调用 public interface IDoStuffAsync { Task AnAsyncMethod(string value); } 我有一个消耗接口并调用异步方法的类 public class UseAnAsyncThing { private readonly IDoStuffAsync _doStuffAsync; public UseAnAsyncThing(IDoStuffAsync doStuffAsync) { _doStuffAsync = doStuffAsync; } public async Task DoThatAsyncOperation(string theValue) { await _doStuffAsync.AnAsyncMethod(theValue); } } 在我的测试中,我希望检查方法DoThatAsyncOperation是否使用正确的值调用方法,因此我模拟了接口并使用Moq来validation调用 [Fact] public async void The_test_will_pass_even_though_it_should_fail() { var mock = new Mock(); var […]

ASP.NET MVC控制器unit testing – UrlHelper扩展问题

尝试在我的ASP.NET MVC 3 Web应用程序中进行一些控制器unit testing。 我的测试是这样的: [TestMethod] public void Ensure_CreateReviewHttpPostAction_RedirectsAppropriately() { // Arrange. var newReview = CreateMockReview(); // Act. var result = _controller.Create(newReview) as RedirectResult; // Assert. Assert.IsNotNull(result, “RedirectResult was not returned”); } 很简单。 基本上测试[HttpPost]动作以确保它返回RedirectResult (PRG模式)。 我没有使用RedirectToRouteResult因为没有任何重载支持锚链接。 继续。 现在,我正在使用Moq来模拟Http Context,包括服务器变量,控制器上下文,会话等。到目前为止一切顺利。 直到我在我的动作方法中点击这一行: return Redirect(Url.LandingPageWithAnchor(someObject.Uri, review.Uri); LandingPageWithAnchor是一个自定义HTML帮助器: public static string LandingPageWithAnchor(this UrlHelper helper, string uri1, string uri2) […]

在汇编()中汇总值时访问Expect()的原始参数

是否可以在组装Returns对象时访问用于调用模拟期望的参数? 这是所涉及对象的存根,鉴于此,我试图模拟一个集合: Class CollectionValue { public Id { get; set; } } Class Collection { private List AllValues { get; set; } public List GetById(List ids) { return AllValues.Where(v => ids.Contains(v.Id)); } } 给定将用于模拟对象的CollectionValues测试列表,如何设置期望将处理CollectionValues列表中ID的每个可能排列,包括组合现有ID和不存在ID的调用? 我的问题来自于希望在一次通话中建立所有可能的期望; 如果无法访问原始参数,我可以轻松地设置每次我想在给定调用中测试的确切期望。 这是我希望做的,“???” 表示访问用于调用GetById的参数(符合It.IsAny限制的参数)的方便位置: CollectionMock.Expect(c => c.GetById(It.IsAny<List>())).Returns(???);

先模拟一个方法而不先嘲笑一个类

我正在使用moq4来模拟我的UnitTests中的东西。 我有一个类说TestClass ,其中一个名为TestMethod的方法是我想要测试的方法。 所以我的问题是我的TestMethod需要检查我的TestClass中的testlist 。 像这样:- public Class TestClass { public readonly ISomeService _someService; public bool TestProperty { get; private set; } public List testlist { get; private set; } Public TestClass(ISomeService someService) { _someService = someService; } public async Task TestMethod(string sd) { if(TestProperty) // here how can i control this property in UnitTest. […]

在unit testing中模拟SignalR Clients.Group的方法

我正在为SignalR应用程序编写模拟测试用例。 我刚开始在unit testingSignalR应用程序的帮助下,但我的要求与那里显示的示例略有不同。 以下是我在谷歌搜索后所做的代码。 SignalRHub public class HubServer : Hub { [HubMethodName(“SendNofication”)] public void GetNofication(string message) { try { Clients.Group(“Manager”).BroadCast(message); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } unit testing public interface IClientContract { } [TestMethod] public void GetNoficationTest() { var hub = new HubServer(); var mockClients = new Mock<IHubCallerConnectionContext>(); hub.Clients = mockClients.Object; var […]

Moqentity frameworkExecuteSQLCommand

我已经读过,当使用moq时你无法模拟非虚函数。 我也读过,现在应该可以了。这是真的吗? 如果是这样,那么我想模拟以下查询: DatabaseContext.Database.ExecuteSqlCommand(updateQuery, newValue); 我在测试中覆盖了Context DAL.Context.DatabaseContext = mockContext.Object; 我试过这个设置,但似乎查询仍然是我的常规数据库 mockContext.Setup(c => c.Set()).Returns(mockBudgetData.Object); 任何想法,也许executeccommand可以替换为其他东西,以便上面的行将捕获任何udpates到集合? 我一次更新多行时由于性能原因使用executionqlcommand。 常规EF太慢了 更新: 阅读以下文章, 如何Moqentity frameworkSqlQuery调用我想知道类似的实现是否适用于ExecuteSQLCommand …