【发布时间】:2019-07-30 08:21:40
【问题描述】:
我有以下我正在模拟的接口方法。
public interface IMessageBus : IDisposable
{
IMessage CreateMessage<T>(T content);
}
现在我可以为我的单元测试模拟这个界面,如下所示。
_messageBus = new Mock<IMessageBus>();
现在如何设置 CreateMessage 以返回我想要的特定对象。
_messageBus.Setup(x => x.CreateMessage(It.IsAny<object>())).Returns(Mock.Of<IMessage>());
这只是返回一个空对象但我需要返回一个有效对象。像这样的
JsonConvert.SerializeObject(obj); // where obj is an Object.
基本上我需要在调用时返回上面的行
创建消息
方法。我们怎样才能做到这一点?
注意:我可以通过创建一个实现IMessage 接口的MockMessage 类并添加所需的功能来做到这一点。
但我想知道我们是否可以在没有明确的类定义的情况下做到这一点。
我的消息
public interface IMessage : IDisposable
{
string Id { get; }
string CorrelationId { get; set; }
string MessageContentType { get; }
TimeSpan? TimeToLive { get; set; }
AcknowledgementStatus AcknowledgementStatus { get; }
IDictionary<string, object> CustomHeaders { get; }
byte[] RawContent { get; }
void Abandon();
Task AbandonAsync();
void Acknowledge();
Task AcknowledgeAsync();
IMessage Clone();
T GetContent<T>();
T GetContent<T>(IBinarySerializer serializer);
IDictionary<string, object> GetMessageHeaders();
}
【问题讨论】:
-
你真的很亲,可以分享
IMessage界面吗? -
共享界面。
标签: c# unit-testing moq