【发布时间】:2019-02-06 12:43:06
【问题描述】:
我正处于以下问题的十字路口。比方说,我有以下 class
public class Foo
{
internal Bar bar { get; }
internal Foo(Bar bar)
{
this.bar = bar;
}
}
我正在尝试使用 XUnit 和 Moq 对其进行单元测试。我创建的初始测试是
[Theory]
[AutoMockData]
internal void CtorShouldCreateInstance(Bar bar)
{
var sut = new Foo(bar);
Assert.NotNull(sut);
}
这是一个有效的单元测试,但是通过传递 Bar 作为参数,它带来了它的所有依赖项,使其成为 concrete 类型。我同事的建议是通过 Interface 和 Mock 接口来引入 Bar 对象,但我不知道该怎么做。
我想过做一个接口,一个CreateBar方法及其所需参数,继承接口到Foo类,实现方法然后添加到单元测试,但我想得到澄清或批准,因为我不确定这是正确的方法。
提前感谢所有帮助!
【问题讨论】:
-
Bar应该从像IBar这样的抽象派生出来,这就是应该注入依赖项的内容
标签: unit-testing asp.net-core moq xunit