C# FakeiTesy:从返回null的受保护方法获取参数
我试图测试在受保护的虚拟方法中传递的参数,以确保属性设置正确。然而,下面的语句并没有设置我的变量,但Fakeitesy确实认识到正在进行此调用。我的语法不正确吗 单元测试C# FakeiTesy:从返回null的受保护方法获取参数,c#,unit-testing,fakeiteasy,C#,Unit Testing,Fakeiteasy,我试图测试在受保护的虚拟方法中传递的参数,以确保属性设置正确。然而,下面的语句并没有设置我的变量,但Fakeitesy确实认识到正在进行此调用。我的语法不正确吗 单元测试 EmailEventArgs argsInEvent = null; A.CallTo(repository).Where(w => w.Method.Name == "OnSaveRequest") .Invokes(i => argsInEvent = i.GetArgument<EmailEv
EmailEventArgs argsInEvent = null;
A.CallTo(repository).Where(w => w.Method.Name == "OnSaveRequest")
.Invokes(i => argsInEvent = i.GetArgument<EmailEventArgs>(0))
.MustHaveHappened(Repeated.Exactly.Once);
如果没有整个测试,就有点难以判断发生了什么。典型的测试模式是:
A.CallTo
似乎正在尝试两者
配置方法并验证是否进行了调用。自从你
说一定发生过
通过了,我猜这个代码
在调用生产代码后生存。比如:
var repository = A.Fake<IRepository>();
repository.SaveSetup(…);
EmailEventArgs argsInEvent = null;
A.CallTo(repository).Where(w => w.Method.Name == "OnSaveRequest")
.Invokes(i => argsInEvent = i.GetArgument<EmailEventArgs>(0))
.MustHaveHappened(Repeated.Exactly.Once);
// Arrange
EmailEventArgs argsInEvent = null;
var repository = A.Fake<IRepository>();
A.CallTo(repository).Where(w => w.Method.Name == "OnSaveRequest")
.Invokes(i => argsInEvent = i.GetArgument<EmailEventArgs>(0));
// Act
repository.SaveSetup(…);
// Assert
A.CallTo(repository).Where(w => w.Method.Name == "OnSaveRequest")
.MustHaveHappened(Repeated.Exactly.Once);
// and maybe do something with argsInEvent
如果没有整个测试,就有点难以判断发生了什么。典型的测试模式是:
A.CallTo
似乎正在尝试两者
配置方法并验证是否进行了调用。自从你
说一定发生过
通过了,我猜这个代码
在调用生产代码后生存。比如:
var repository = A.Fake<IRepository>();
repository.SaveSetup(…);
EmailEventArgs argsInEvent = null;
A.CallTo(repository).Where(w => w.Method.Name == "OnSaveRequest")
.Invokes(i => argsInEvent = i.GetArgument<EmailEventArgs>(0))
.MustHaveHappened(Repeated.Exactly.Once);
// Arrange
EmailEventArgs argsInEvent = null;
var repository = A.Fake<IRepository>();
A.CallTo(repository).Where(w => w.Method.Name == "OnSaveRequest")
.Invokes(i => argsInEvent = i.GetArgument<EmailEventArgs>(0));
// Act
repository.SaveSetup(…);
// Assert
A.CallTo(repository).Where(w => w.Method.Name == "OnSaveRequest")
.MustHaveHappened(Repeated.Exactly.Once);
// and maybe do something with argsInEvent
我想这会让我失望的!问题。我一定坐在电脑前太久了,看不到调用是在我的生产代码调用之后!所以,是的,这是有效的。一如既往地谢谢。干杯。很高兴我能帮忙。如果有什么安慰的话,我最近看到了一些问题,最终得到了不同的答案。让我想知道是否有机会改进伪造的文档。对我来说,做“安排->配置假货,行动->让生产代码使用假货,断言->审问假货”是有道理的,但当你“在里面”的时候,很容易有这种感觉。嗯。我可能可以通过指向……来节省一些时间。我确实搜索了一个调用的示例,并阅读了《快速入门》和许多其他指南。我认为Quickstart让我大吃一惊,因为它只显示了调用语法,而我没有考虑生产调用(在我的示例中,这也是我应该告诉您的!)然而,如果我注意到流程的话,我应该向我展示AAA测试模式是一个伟大的TDD和单元测试模式-它使测试更干净、更容易理解,我认为这将是我的梦想!问题。我一定坐在电脑前太久了,看不到调用是在我的生产代码调用之后!所以,是的,这是有效的。一如既往地谢谢。干杯。很高兴我能帮忙。如果有什么安慰的话,我最近看到了一些问题,最终得到了不同的答案。让我想知道是否有机会改进伪造的文档。对我来说,做“安排->配置假货,行动->让生产代码使用假货,断言->审问假货”是有道理的,但当你“在里面”的时候,很容易有这种感觉。嗯。我可能可以通过指向……来节省一些时间。我确实搜索了一个调用的示例,并阅读了《快速入门》和许多其他指南。我认为Quickstart让我大吃一惊,因为它只是显示了调用语法,而我没有考虑生产调用(在我的示例中,这也是我应该告诉你的!)但是如果我注意到流程的话,我应该向我展示AAA测试模式是一个很棒的TDD和单元测试模式-它使测试更干净、更容易理解