2012-06-20 36 views
4

我試圖測試以下出版代碼(類和特性被調整,例如,目的):ExpectPublish失敗發佈時(PARAMS T []消息)包含一個以上的消息

public void PublishMessages(List<SomeDummyClass> shareRegistrationResult) 
{  
    var failedMessages = shareRegistrationResult 
           .Where(c => !c.WasRegistered) 
           .Select(c => CreateNotRegisteredMessageInstance(c.String1, c.String2)).ToArray(); 
    _bus.Publish(failedMessages); 
} 

private IMyMessage CreateNotRegisteredMessageInstance(string string1, string string2) 
{ 
    return _bus.CreateInstance<IMyMessage>(message => 
            { 
             message.String1 = string1; 
             message.String2 = string2; 
            }); 
} 

的測試碼(改變以匹配虛設消息)

NServiceBus.Testing.Test.Handler(bus => new Publisher() 
    .ExpectPublish<IMyMessage>(message => message.String1 == "Hello" && message.String2 == "World") 
    .ExpectPublish<IMyMessage>(message => message.String1 == "Foo" && message.String2 == "Bar"); 

這只是正常如果failedMessages陣列只包含一個消息,但失敗,當陣列具有多於一個消息以下錯誤:

Rhino.Mocks.Exceptions.ExpectationViolationException : IBus.Publish(callback method: <>c__DisplayClass1c`1.<ExpectPublish>b__1b); Expected #1, Actual #0. 
IBus.Publish(callback method: <>c__DisplayClass1c`1.<ExpectPublish>b__1b); Expected #1, Actual #0. 

當在一個發佈中測試多個郵件時如何使用ExpectPublish測試(或其他)的任何想法?

回答

0
+0

不確定,我怎麼錯過了這一點。我沒有搜索NServiceBus的issuelog,但它幾乎是我在檢查NServiceBus.Testing項目的源代碼後得出的結論... –

+0

這個錯誤最近被添加了,所以可能是爲什麼你錯過了它:) –