NSubstitute does not have direct support for arg matching parameters, but overall it will work fine with them.
, ref, , , , ref, API , ( ).
ref, , :
form.SetItem(ref item);
, . , , , , . (, , , , .)
:
form.When(x => x.SetItem(ref item)).Do(x => { throw new ArgumentNullException(); });
null ref. , , , , , .
form.WhenForAnyArgs(x => x.SetItem(ref item))
.Do(x => {
if (x[0] == null)
throw new ArgumentNullException();
});
, , , , , IAddAddressForm arg, :
form
.WhenForAnyArgs(x => x.SetItem(ref item))
.Do(x => { throw new ArgumentNullException(); });
, , , , .
, .
:
arg (, Arg.Any<AddressItem>()) out ref, ( : , , ):
IAddAddressForm form = Substitute.For<IAddAddressForm>();
AddressItem item = Arg.Is<AddressItem>(y => y.Number == 14);
form
.When(x => x.SetItem(ref item))
.Do(x => { throw new ArgumentNullException(); });
var address = new AddressItem { Number = 14 };
form.SetItem(ref address);