我想用Moq设置两次方法,但似乎最后一个方法覆盖了前面的方法。这是我的初步设置:
string username = "foo";
string password = "bar";
var principal = new GenericPrincipal(
new GenericIdentity(username),
new[] { "Admin" });
var membershipServiceMock = new Mock<IMembershipService>();
membershipServiceMoc
我已经将行为隔离到下面的测试用例中。我将非常感谢任何人告诉我如何期望/验证List<T>属性的属性集--看起来It.Is<T>(predicate)内部正在发生一些事情,现在对我来说并不是很有意义。示例代码将作为VS2008的控制台应用程序运行-您需要添加对Moq2.6的引用(我在2.6.1014.1) -请尝试取消注释不同的ExpectSet语句,看看发生了什么……
using System;
using Moq;
using System.Collections.Generic;
namespace MoqDemo {
public interface
我正在编写一些代码,这些代码遵循将方法的所有参数封装为"request“对象并返回"response”对象的模式。然而,当涉及到MOQ的模拟时,这产生了一些问题。例如:
public class Query : IQuery
{
public QueryResponse Execute(QueryRequest request)
{
// get the customer...
return new QueryResponse { Customer = customer };
}
}
public class Query
我对C#中的单元测试和学习使用Moq相当陌生。下面是我的Moq Verify()方法问题的例子。
[Theory]
[AutoData]
public async Task WhenSomething_ThenSomething(IEnumerable<string> stringCollection)
{
//Arange
//Mock of the method used in Handle() that returns stringCollection.
someMock.Setup(x => x.MethodReturn
我正在尝试验证传递给(同一方法的)后续模拟方法调用的参数的值,但找不到有效的方法。下面是一个通用示例:
public class Foo
{
[Dependency]
public Bar SomeBar
{
get;
set;
}
public void SomeMethod()
{
this.SomeBar.SomeOtherMethod("baz");
this.SomeBar.SomeOtherMethod("bag");
}
}
有没有一种方法可以使用Moq进行存根处理?我看到了很多类似标题的问题,但没有一个真正回答了我的问题。这里给出了一个单元测试示例,我发现使用Moq进行测试非常困难。我想做的是对EmailTasks.UserIsValidForNotice()方法进行单元测试:
public class User
{
public DateTime JoinDate { get; set; }
public bool Active { get; set; }
}
public class EmailTasks
{
IUserRepository repo;
public Ema
所以我对这个测试业务有点陌生,并且使用了Moq库。我想知道It.Is()方法的使用情况。
假设我有一堂课我想测试一下:
public class ZeroChecker
{
public bool IsNotZero(int myInt)
{
return myInt != 0;
}
}
因此,我创建了一个相应的类来测试:
public class ZeroCheckerTest
{
[Fact]
public void IsNotZero_ReturnsTrue_WhenInputIsNotZero()
{
//
我现在有这样一个Moq表达式
repo.Setup(r => r.GetProjectConfigurationById(It.Is<int>(s => s == response.Id)))
.Returns(response); // return response only if id matches setup one
可以看到,response是一个有自己的Id字段的对象。现在我有了一个List<responses>,并希望将这个表达式转换为这样的行为:
获取任意整数Id
如果Id正在计算response.Id,则返回list的元
最近,我在我的一个C#项目中发现了Moq库(4.5.21)相当有趣的行为。下面是我要测试的类。
public class Order
{
public string State { get; set; }
}
public interface IOrderService
{
Task UpdateOrderAsync(Order order);
}
public class Program
{
public async Task RunAsync(IOrderService orderService)
{
var order = new Or
我知道这个问题曾经在这里被问过,但是我很困惑为什么这个测试失败了。下面是我正在运行的测试:
public void SubmitWebservicePurchaseOrder_Calls_addQuickAddItemListToPO()
{
var input = new PurchaseOrderWebserviceSubmitDTO();
_service.SubmitWebservicePurchaseOrder(input);
var dict = It.IsAny<Dictionary<long, Qui
在Moq中,我希望断言使用特定参数调用方法TestMethod。当测试失败时,我希望看到一个有用的错误消息,类似于:
TestMethod以意外值X调用参数P,其中Y是预期的。
public interface ITestObject
{
void TestMethod(int parameter);
}
为了举例说明,我可以使用一个手写的模拟来实现这一点,如下所示:
Assert.AreEqual失败了。Expected:<3>。Actual:<2>。TestMethod以参数“实际”的意外值调用。
public class MockTestMetho
我有这样的方法:
public void Valida(Validazione.IValidator<MyType> validator)
{
// do something...
Validazione.IMapper<MyType> mapper = new MyTypeMapper();
ValidationResult result = validator.Validate(myTypeObj, mapper, new ValidationConfiguration());
// ...continue doing somethi
我有以下代码:
public class ExampleClass
{
public void ExampleMethod(IMyInterface myInterface)
{
var test = new DataClass();
test.Id = 5;
myInterface.DoSomething(test);
}
}
public class DataClass
{
public int Id {get;set;}
}
我想编写一个测试,检查ExampleMethod是否正确地调用了DoSomething。重要的是,Id属性的值为5。这是测
我试图模拟一个非常简单(简化)的接口,它基本上是缓存服务的接口:
public interface ICache
{
T Get<T>(String key);
T Set<T>(String key, T value); // return T on success or null on fail
}
我想通过以下方式使用Moq来模拟这个问题:
如果使用尚未设置的键调用Get,则应返回null
如果我用'x‘和值'y’调用Set,然后用'x‘键调用Get,它应该返回'y’。
如果我用值'z‘覆盖键'x
给定以下代码
public class Entity
{
public string Name { get; set; }
public string Status { get; set; }
}
public interface IRepository
{
void InsertEntity(Entity entity);
void UpdateEntity(Entity entity);
}
public class Processor
{
private IRepository _repository;
public Processo
我正在尝试使用n替代品来测试ILogger中的Microsoft.Extensions.Logging。就像这里说的:,在那个时候,没有像Moq中的It.IsAnyType那样的东西,我想知道现在是否有类似的东西?因为我也是工作的单位测试的基础上,以非替代。@rgvlee的样本:
public class TestsUsingMoq
{
[Test]
public void MyMethod_String_LogsError()
{
// Arrange
var logger = Mock.Of<ILogger<MyClass
我有意识地试图通过一个糟糕的moq设置,我期待一个错误。我将一个类传递给我的setup方法,在那里我希望在特定条件下的实例变量。因为我创建了这个类的一个新实例,所以我希望会出现一个错误,因为所有的实例变量都是null。但是,什么都不会被扔出去?
var mockParams = new object[] { mockRequestRepo.Object, mockNotificationSvc.Object, mockLogger.Object, mockNotificationBuilder.Object };
var mockActivityReportBO
我试图使用Moq验证方法调用,但语法不太正确。目前,我得到了这个作为我的验证:
repository.Verify(x => x.ExecuteNonQuery("fav_AddFavorites", new
{
fid = 123,
inputStr = "000456"
}), Times.Once());
代码编译,但测试失败,错误:
Expected invocation on the mock once, but was 0 times:
x => x.ExecuteNonQuery("fav_AddFavorit
我有以下代码:
var connector = new Mock<IConector>();
connector
.Setup(cn => cn.listar("FetchEstandar", new Estandar(), new {Id = 1}))
.Returns(new List<Estandar>{ new Estandar {Id = 1} });
var entidad = connector.Object
.listar("FetchEstandar", new Estandar()