以下是我嘗試做的事情:
Public Interface IDAO(Of T) : Inherits IDAO
Default Property Value(i As ULong) As T
Function Append(ts As ICollection(Of T) As ULONG
Function Remove(f As Predicate(Of T) As ICollection(Of T)
Function GetRestricted(f As Predicate(Of T) As ICollection(Of T)
Function RemoveFirst(f As Predicate(Of T>) As T
Function GetFirst(f As Predicate(Of T) As T
End Interface
'.../span>
_mock.WhenForAnyArgs(
Function(mock As IDAO(Of T)) mock. Value(Arg.Any(Of ULong)) = Arg.Any(Of T) ()
).Do(
Sub(c As Core.CallInfo) Exit Sub 'Value(i) ... Set(v) ... _inner.data(i) = v
模式選擇器 Function(mock As IDAO(Of T)) mock.Value(Arg.Any(Of ULong)) = Arg.Any(Of T)()不起作用;而且即使它起作用,我也不知道如何在Do陳述句中利用CallInfo物件。
uj5u.com熱心網友回復:
我不確定如何在VB中做到這一點,但這里是如何在C#中做到這一點的,希望你或其他人可以翻譯一下。
public interface IDao
{
ulong Value { get; set; }
}
[SuppressMessage("Argument specification", "NS3002:Can not find an argument to this call.", Justification = "Used in property set") ]
[事實]
public void PropertySetExample() {
var sub = Substitute.For<IDao> ();
var value = 0ul;
sub.WhenForAnyArgs(x => x.Value = 0ul).Do( callInfo =>
// 這將被呼叫 when sub.Value is set.
// 對于這個例子,我們只是把分配給一個區域變數。
value = callInfo.Arg<ulong>()
);
sub.Value = 42;
Assert.Equal(42ul, value)。
(SuppressMessage只有NSubstitute.Analyzers需要,因為它不確定屬性集的引數。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/308303.html
標籤:
