【发布时间】:2026-01-26 13:35:01
【问题描述】:
我有以下测试
[Test]
public void Attack_TargetWith3Damage_CausesAttackerToDeal3DamageToTarget()
{
var realAttacker = CreateCreature(damage: 3);
var wrappedAttacker = A.Fake<ICreature>(x => x.Wrapping(realAttacker));
var target = A.Fake<ICreature>();
wrappedAttacker.Attack(target);
A.CallTo(() => wrappedAttacker.DealDamage(target, 3)).MustHaveHappened();
}
问题是从Attack 方法调用DealDamage 没有被注册,因为在方法内部,this 是realAttacker 而不是wrappedAttacker 攻击者因此方法调用不是被拦截了。
如何测试这个断言?这可以用 FakeItEasy 完成吗?不同的模拟框架是否允许我对此进行测试?
【问题讨论】:
-
这也是我在使用 NSubstitute 时遇到的问题。
标签: c# unit-testing mocking nunit fakeiteasy