рдореЗрд░реЗ рдкрд╛рд╕ рдпреЗ рджреЛ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ (рддреНрд░реБрдЯрд┐ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирдВрдЧреЗ рд╣рдбреНрдбрд┐рдпреЛрдВ рдХреЛ рдЫреАрди рд▓рд┐рдпрд╛ рдЧрдпрд╛):
[TestFixture]
public class CreditorMapperTests
{
private IAbcContext _AbcContext;
[SetUp]
public void Setup()
{
_AbcContext = Substitute.For<IAbcContext>();
_AbcContext.CompanyInfo.Returns(x => new CompanyInfo(Arg.Any<Guid>()));
}
[Test]
public void A()
{
Creditor publishDocument = new Creditor();
publishDocument.CompanyExternalId = _AbcContext.CompanyInfo.UniqueId;
}
[Test]
public void B()
{
Creditor publishDocument = new Creditor();
publishDocument.CompanyExternalId = _AbcContext.CompanyInfo.UniqueId;
}
}
public interface IAbcContext
{
CompanyInfo CompanyInfo { get; }
}
public class CompanyInfo
{
public CompanyInfo(Guid uniqueId)
{
UniqueId = uniqueId;
}
public readonly Guid UniqueId;
}
Setup()
рд▓рд┐рдП A()
рдареАрдХ рдЪрд▓рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬрдм Setup()
рдХреЛ B()
рд▓рд┐рдП рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
NSubstitute.Exceptions.UnexpectedArgumentMatcherException: Argument
рдореИрдЪрд░реНрд╕ (Arg.Is, Arg.Any) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рд╕рджрд╕реНрдп рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рддрд░реНрдХред рд░рд┐рдЯрд░реНрди () рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдпрд╛ рдХрд╣реАрдВ рдФрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рди рдХрд░реЗрдВ
рдПрдХ рд╕рджрд╕реНрдп рдХреЙрд▓ рдХреЗ рдмрд╛рд╣рд░ред рд╕рд╣реА рдЙрдкрдпреЛрдЧ:
рдЙрдк.MyMethod(Arg.Any())ред рд░рд┐рдЯрд░реНрди ("рд╣рд╛рдп") рдЧрд▓рдд рдЙрдкрдпреЛрдЧ:
sub.MyMethod("hi").Returns(Arg.Any .)())
рдпрд╣ рдХреЗрд╡рд▓ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдореИрдВ рдЙрд╕ рдХрдХреНрд╖рд╛ рдореЗрдВ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдХрд░ рджреЛрдиреЛрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реВрдВред
рдпрджрд┐ рдореИрдВ рд╕реНрд╡рдпрдВ B()
рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХрд╛ рдЬрд╛рддрд╛ рд╣реИред
Setup()
рд▓рд┐рдП B()
рдХреЗрд╡рд▓ рддрднреА рд╡рд┐рдлрд▓ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм A()
рдмрд╛рдж рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
(рдирд╛рдпрдмред рджреЛрдиреЛрдВ рдкрд░реАрдХреНрд╖рдг рд╕рдорд╛рди рд╣реИрдВ)ред
рдореИрдВ NUnit v3.8.1 рдФрд░ NSubstitute v2.0.3 . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ
рдпрд╣ NSubstitute рдХрд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╣реИред рд╕рдВрджреЗрд╢ рд╣реА рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ NUnit рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
рдпрджрд┐ рдЖрдк рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рдХреЗрд╡рд▓ рджреВрд╕рд░реА рдмрд╛рд░ рдХреНрдпреЛрдВ рдлреЗрдВрдХрддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реА рдмрд╛рд░ рдирд╣реАрдВ, рддреЛ рдЖрдк рдЧрд▓рдд рд▓реЛрдЧреЛрдВ рд╕реЗ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВред рдЖрдк NSubstitute рдХреЗ рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЖрдкрдХреЗ рд╕рдордп рдХрд╛ рдмреЗрд╣рддрд░ рдЙрдкрдпреЛрдЧ Arg.Any() рдХрд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИред
рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╕рдмрдорд┐рдЯ рдХреА рд╣реИ:
https://github.com/nsubstitute/NSSubstitute/issues/587
@ backwardsDave1 рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ NUnit рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрд╣ NSubstitute рдХрд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╣реИред рд╕рдВрджреЗрд╢ рд╣реА рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ NUnit рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
рдпрджрд┐ рдЖрдк рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рдХреЗрд╡рд▓ рджреВрд╕рд░реА рдмрд╛рд░ рдХреНрдпреЛрдВ рдлреЗрдВрдХрддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реА рдмрд╛рд░ рдирд╣реАрдВ, рддреЛ рдЖрдк рдЧрд▓рдд рд▓реЛрдЧреЛрдВ рд╕реЗ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВред рдЖрдк NSubstitute рдХреЗ рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЖрдкрдХреЗ рд╕рдордп рдХрд╛ рдмреЗрд╣рддрд░ рдЙрдкрдпреЛрдЧ Arg.Any() рдХрд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИред