2
我有類似這樣的測試代碼:爲什麼RhinoMocks在VB和C#中表現不同?
Public Interface IDoSomething
Function DoSomething(index As Integer) As Integer
End Interface
<Test()>
Public Sub ShouldDoSomething()
Dim myMock As IDoSomething = MockRepository.GenerateMock(Of IDoSomething)()
myMock.Stub(Function(d) d.DoSomething(Arg(Of Integer).Is.Anything))
.WhenCalled(Function(invocation) invocation.ReturnValue = 99)
.Return(Integer.MinValue)
Dim result As Integer = myMock.DoSomething(808)
End Sub
如同預期這個代碼不行爲。如預期的那樣,變量result
包含Integer.MinValue
而非99。
如果我寫在C#中它可以作爲預期的等效代碼:result
包含99
任何想法,爲什麼?
C#當量:
public interface IDoSomething
{
int DoSomething(int index)
}
[test()]
public void ShouldDoSomething()
{
var myMock = MockRepository.GenerateMock<IDoSomething>();
myMock.Stub(d => d.DoSomething(Arg<int>.Is.Anything))
.WhenCalled(invocation => invocation.ReturnValue = 99)
.Return(int.MinValue);
var result = myMock.DoSomething(808);
}
您應該提供C#代碼。你認爲等同的東西可能不是這樣,也可能是答案所在。 – nathanchere
呵呵,你爲什麼提供兩個不同的返回值?你不能放棄'WhenCalled()',只使用'Return()'?不知道分歧行爲的原因。 –