当我用Moq.AutoMock.Automocker模拟"autoMocker.CreateInstance();“时,我得到了下面的通用消息。HeliumController类的构造函数有几个接口。我如何才能找到哪个特定的接口或构造函数无法模拟?
{System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.NotSupportedException: Type to mock must be an inte
背景:-使用EntityFramework 6-使用Moq v4.2.1402.2112 -使用DbFirst方法
然而,我一直在跟踪EF6 Moq演练(可以找到);我一直在想,是否有可能让一个模拟的DbSet在其作用域期间保留添加到它中的数据?
例如:
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
namespace TestingDemo
{
我对mocking的想法还很陌生,我正在使用Moq来对这段代码进行单元测试。
using Forum = ProForum.Domain.Database.tblForum;
using Thread = ProForum.Domain.Database.tblThread;
namespace ProForum.Domain.Concrete
{
public class ForumRepository : IForumRepository
{
protected Table<Forum> DataTable;
private ProForu
假设我有IService接口:
public interface IService
{
string Name { get; set; }
}
以及返回此接口的委托Func<IService>。
在我的单元测试中,我想使用下面的Moq来模拟委托的Invoke()方法:
[TestMethod]
public void UnitTest()
{
var mockService = new Mock<IService>();
var mockDelegate = new Mock<Func<IService>>();
我尝试在Mono2.8.2上编译这个moq示例,目标是.NET 3.5,使用MonoDevelop 2.4.1。
using System;
using Moq;
namespace moq_demo
{
public interface IFoo
{
bool DoSomething(string n);
}
class MainClass
{
public static void Main (string[] args)
{
var mock = new Mock<IF
如何模拟类的成员变量?
这个FooA()似乎从来没有被调用过。
注:我是moq的初学者(在C#上是生疏的),所以请容忍我;-)
未处理的异常: Moq.MockVerificationException:以下设置不匹配: IA a => a.FooA()
以下是源代码:
using Moq;
namespace TestMock
{
interface IA {
void FooA();
}
class A : IA {
public void FooA() { }
}
class B {
在我的单元测试中,我使用Moq模拟了一个受保护的方法,并希望断言它被调用了一定的次数。描述了与早期版本的Moq类似的东西:
//expect that ChildMethod1() will be called once. (it's protected)
testBaseMock.Protected().Expect("ChildMethod1")
.AtMostOnce()
.Verifiable();
...
testBase.Verify();
但这不再有效;从那时起,语法发生了变化,我在使用Moq 4.x时找不到新的等价物:
testBaseMock
我正在开发一个应用程序,使用NHibernate进行对象关系管理,使用NUnit进行单元测试,使用NHibernate进行DI。我是这样模拟ISession的:
var session = new Mock<ISession>();
对于常规的非模拟会话对象,我可以使用LINQ扩展方法查询它们,如下所示:
var result = Session.Query<MyEntity>();
但是当我尝试用下面的代码来模拟它的时候...
session.Setup(s => s.Query<MyEntity>());
...I获取运行时“不支持”异常:
Exp
我有这样的方法:
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
我有一个Setup.Callback()操作在VB.NET中没有被调用,它在C#中正常工作。代码转换是正确的。
VB.NET
Private Function CreateFriendEditViewModel() As IFriendEditViewModel
Dim oWrapper As FriendWrapper
Dim oFriend As [Friend]
Dim oMock As Mock(Of IFriendEditViewModel)
oMock = New Mock(Of IFriendEditViewModel)
oMock.
Setup(S
我使用mog来模拟带有LINQ to SQL的存储库,如下所示:
public static IProductsRepository MockProductsRepository(params Product[] prods){
// Generate an implementer of IProductsRepository at runtime using Moq
var mockProductsRepos = new Mock<IProductsRepository>();
mockProductsRepos.Setup(x => x.Produ
在下面的代码中我得到了以下错误:
类型或命名空间定义,或预期的文件结束
这段代码与模拟对象有关。请让我知道如何修改此代码以删除此错误。我试着移除最后一个支撑,但它给了我更多的错误。此外,当我试图构建这段代码时,它会说“构建失败”。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Moq;
using Test;
namespace Test
{
namespace TestClass
我正在使用AutoMapper,并将映射引擎定义为
private readonly IMappingEngine _mappingEngine;
我通过构造函数注入初始化它,并在代码中使用,如下所示
var product=//Get a single product
var productModel = _mappingEngine.Map<ProductModel>(product);
上面的工作原理是完美的。现在我需要将Product的列表映射到ProductModel列表,控制器操作中的工作如下
var entities =//Get list of products
v
我试图对一个控制器操作进行单元测试,该操作使用成员资格提供程序来更新用户详细信息。我使用的是Moq,到目前为止一直很容易使用。
问题是,我似乎无法让它模拟对不返回任何东西的方法的调用。
<TestMethod()> _
Public Sub Can_Update_User()
' Arrange
_membershipService.Setup(Function(x) x.UpdateUser(It.IsAny(Of MembershipUser)))
Dim controller As New UsersController(_membershipServic
我正在尝试测试我的项目中的一些异常,我捕获的异常之一是SQlException。
似乎不能使用new SqlException(),所以我不确定如何抛出异常,特别是在不调用数据库的情况下(因为这些是单元测试,所以通常建议不要调用数据库,因为它很慢)。
我正在使用NUnit和Moq,但我不确定如何伪造它。
在回答一些似乎都基于ADO.NET的问题时,请注意我使用的是Linq to Sql。所以这些东西就像是幕后的东西。
@MattHamilton要求提供更多信息:
System.ArgumentException : Type to mock must be an interface or an
我来自Java,在那里我很容易用Spies和Mockito做这类事情。我意识到Moq不支持Spies,但如果你设置了CallBase,那么在调用其他真正的方法时,只模拟类中的一个方法似乎是可行的。 新测试的遗留类,试图测试Split()方法。将在Split方法中使用的显式文件流创建重构为自己的GetReaderStream方法,这样我就可以模拟它(我从protected开始,但我公开了它,以便在学习过程中排除Moq Protected设置问题)。 public class MySplitter
{
protected string _fileToSplit;
protected st
我试图使用Moq模拟一个Func<Tin, Tout>,并验证它是否被调用(调用)
我目前的代码是:
var handlers = new List<ICallBridgeHandler>();
var stationIdReader = new Mock<IStationIdReader>();
var loggerCreator = new Mock<Func<Type, ILogger>>();
loggerCreator.Setup(x => x.Invoke(typeof(Service))).Returns<I
Moq.SetupGet抛出异常。
为什么?
如果我没有办法,如何正确地做这件事,如何更改测试的类(我不能添加接口或使属性变为虚拟的或类似的东西)
班级
public class ToDelete
{
public int ToDeleteProperty
{
get;
set;
}
}
测试
[TestMethod]
public void PutCaseByIdCaseContactsExperimental()
{
var toDelete = new Mock<ToDelete>();
toDelete
在Moq中,我希望断言使用特定参数调用方法TestMethod。当测试失败时,我希望看到一个有用的错误消息,类似于:
TestMethod以意外值X调用参数P,其中Y是预期的。
public interface ITestObject
{
void TestMethod(int parameter);
}
为了举例说明,我可以使用一个手写的模拟来实现这一点,如下所示:
Assert.AreEqual失败了。Expected:<3>。Actual:<2>。TestMethod以参数“实际”的意外值调用。
public class MockTestMetho
我有下面的类,我正在尝试测试AddRecordToQueue方法。
我使用Moq来模拟AddRecordToQueue方法中AddToQueue方法的结果。
AddToQueue方法返回一个布尔值,因此我尝试用一个真值模拟结果
public class Test
{
private readonly IRabbitMqConnection rabbitMqConnection;
public Test(IRabbitMqConnection rabbitMqConnection)
{
this.rabbitMqConnection = rabbitMq
我想使用Moq或RhinoMocks来模拟这个接口,以验证是否将正确的表达式作为参数传递(并且愿意切换到任何其他可以支持此功能的开源模拟库):
完整源代码:
public class Record
{
public int RecordId { get; set; }
}
public interface IRepository
{
void DeleteRecordsByFilter(Expression<Func<Record, bool>> filter);
}
public class MyClass
{
private readon
我在单元测试中有以下代码
using Moq;
using OtherClass;
[TestClass]
public class TestClass
{
[TestMethod]
public void TestMethod()
{
OtherClass other = new OtherClass();
OtherClass.foo();
}
}
下面是另一个类
using ThirdClass;
public class OtherClass
{
public void foo()
{
Th