- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个方法:
public void Handle(ShipmentConfirmedEvent message)
{
try
{
var trackingOrderDto = new ShipmentConfirmedDto
{
AccountId = message.AccountId,
FirstName = message.CustomerFirstName,
TransactionId = message.TransactionId,
Language = message.LanguageCode,
ExcludedCommunicationChannels = message.ExcludedCommunicationChannels,
TrackingId = message.TrackingNumber
};
Log.Info("Received notify of Shipment Confirmed request with id <{0}> for order {1}", message.GenerationId, message.TransactionId);
if (!string.IsNullOrEmpty(_iosForcePushAccountId))
{
Log.Info("Per device Ios, l'accountId {0} verrà forzato a {1} per configurazione", trackingOrderDto.AccountId, _iosForcePushAccountId);
trackingOrderDto.AccountId = Convert.ToInt64(_iosForcePushAccountId);
}
Log.Debug("Send push notification for IOS for AccountId <{0}>", trackingOrderDto.AccountId);
var iosContent = _sender.Create(trackingOrderDto, "IOS");
_sender.IosSend(iosContent);
trackingOrderDto.AccountId = message.AccountId;
if (!string.IsNullOrEmpty(_androidForcePushAccountId))
{
Log.Info("Per device Android, l'accountId {0} verrà forzato a {1} per configurazione", trackingOrderDto.AccountId, _androidForcePushAccountId);
trackingOrderDto.AccountId = Convert.ToInt64(_androidForcePushAccountId);
}
Log.Debug("Send push notification for Android for AccountId <{0}>", trackingOrderDto.AccountId);
var androidContent = _sender.Create(trackingOrderDto, "ANDROID");
_sender.AndroidSend(androidContent);
}
catch (ExcludedCommunicationChannelsException ex)
{
Log.Warn(ex.Message);
}
catch (Exception ex)
{
var msg = String.Format("Errore durante la gestione del messaggio relativo al PushNotification for username {0}", message.MailTo.First().Address);
Log.Error(ex, msg);
throw new Exception(ex.Message, ex);
}
Log.Info("<{0}> Processed", message.GenerationId);
}
我有这个测试:
[Fact]
public void GivenAnOrderConfirmedEventWithForcedAccountId_WhenHandle_ThenCallSenderWithTheForcedAccountId()
{
NServiceBus.Testing.Test.Initialize();
var service = new ShipmentConfirmedRequestEventConsumer(mockSender, "1111", "2222");
NServiceBus.Testing.Test.Handler(svc => service)
.OnMessage<ShipmentConfirmedEvent>(
m =>
{
m.AccountId = 407716;
m.CustomerFirstName = "Marco";
m.TransactionId = "T123456";
m.LanguageCode = "IT";
m.TrackingNumber = "642167921";
}
);
mockSender.AssertWasCalled(x => x.Create(Arg<ShipmentConfirmedDto>.Matches(dto => dto.AccountId == 2222), Arg<string>.Is.Equal("ANDROID")));
mockSender.AssertWasCalled(x => x.Create(Arg<ShipmentConfirmedDto>.Matches(dto => dto.AccountId == 1111), Arg<string>.Is.Equal("IOS")));
}
第二个AssertWasCalled,IOS相关的,抛出异常,因为好像被覆盖了,在第一个被调用的方法内。
我需要验证 Create 方法在方法中被调用了两次,并且指定了参数。
如何修改测试以验证它?
最佳答案
解决方法是这样修改test:
[Fact]
public void GivenAnOrderConfirmedEventWithForcedAccountId_WhenHandle_ThenCallSenderWithTheForcedAccountId()
{
NServiceBus.Testing.Test.Initialize();
mockSender.Expect(x => x.Create(Arg<ShipmentConfirmedDto>.Matches(dto => dto.AccountId == 2222), Arg<string>.Is.Equal("ANDROID"))).Return(string.Empty);
mockSender.Expect(x => x.Create(Arg<ShipmentConfirmedDto>.Matches(dto => dto.AccountId == 1111), Arg<string>.Is.Equal("IOS"))).Return(string.Empty);
var service = new ShipmentConfirmedRequestEventConsumer(mockSender, "1111", "2222");
NServiceBus.Testing.Test.Handler(svc => service)
.OnMessage<ShipmentConfirmedEvent>(
m =>
{
m.AccountId = 407716;
m.CustomerFirstName = "Marco";
m.TransactionId = "T123456";
m.LanguageCode = "IT";
m.TrackingNumber = "642167921";
}
);
mockSender.VerifyAllExpectations();
}
关于c# - RhinoMock - AssertWasCalled 在具有不同参数的相同方法上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54294013/
我有一个正在测试的对象,它对数据访问对象进行了相当复杂的调用。它看起来像 object.DoSomething(somestring,someObject,someOtherObject,someOt
我有这个方法: public void Handle(ShipmentConfirmedEvent message) { try {
我正在尝试使用 RhinoMocks 断言调用了某个属性 setter 。但它没有按预期工作。 下面的简化示例说明了这个问题。 考虑这个接口(interface): public interface
我调用 _mocks.ReplayAll(),然后调用一个或多个 _mockedObject.AssertWasCalled(),然后调用 _mocks.VerifyAll()。但它告诉我“当模拟对象
我正在使用 RhinoMocks。现在我想断言调用了某个函数,但我只关心其中一个参数。我可以在只指定一个参数的地方执行 AssertWasCalled 吗? 在下面的示例中,我想忽略发送到 SomeO
我如何验证在我的测试的“行为”部分中调用了一个模拟,而忽略了在测试的“排列”部分中对模拟的任何调用。 [Test] public void ShouldOpenThrottleWhenDrivingH
使用 Rhino Mocks 3.6,给出下面的代码我希望 AssertWasCalled 断言通过,但它没有。取而代之的是失败的断言消息: "Rhino.Mocks.Exceptions.Expec
我能否在模拟对象上编写以下断言,以在断言失败时显示“未使用正确参数调用或什至未调用 UnBookFlight”的方式? mockBookingService .Assert
我在使用 ref 参数 stub 方法时遇到问题。 我想为某个输入值 stub 该方法并检查它是否被调用。 我的尝试: // Variables needed - can be skipped var
好的,我知道 Rhino Mocks 中新的 AAA 语法存在很多混淆,但我必须说实话,从我目前所看到的来看,我喜欢。它读起来更好,并节省了一些击键。 基本上,我正在测试 ListController
我有一个模拟对象作为构造函数参数传递给另一个对象。 如何测试模拟对象的属性是否已被调用?这是我目前使用的代码: INewContactAttributes newContact = MockRepos
这是 [Test] 中的调用 _youTubeService.AssertWasCalled(d => d.GetFeedByAuthorWithRequest("Mark", Arg.Is.Anyt
恕我直言,Rhino Mocks 在使用 AssertWasCalled 时会产生一条不清楚的诊断消息,以验证是否已使用特定参数调用方法。 例子: interface ISomeInterface {
我是一名优秀的程序员,十分优秀!