2 回答
TA贡献1943条经验 获得超7个赞
删除 ApiParserControllerTests 中的默认构造函数,改用 [SetUp] 函数。
[TestFixture]
public class ApiParserControllerTests
{
private ApplicationDbContext _dbContext;
[SetUp]
public void SetUp(){
// initialize here
_dbContext = new ApplicationDbContext();
}
[Test]
public void IsOptionValid_Teacher_ShouldReturnTrue()
{
var model = new ApiParserController(_dbContext);
var assign = model.IsOptionValid("Teacher");
Assert.AreEqual(true, assign.Value);
}
}
TA贡献1786条经验 获得超11个赞
您定义了一个带有构造函数的装置,该构造函数采用ApplicationDbContext
. 这意味着您需要为 NUnit 提供这样一个对象,以便它可以调用构造函数。
OTOH,通过TestFixture
不带任何参数使用,您是在告诉 NUnit 使用默认构造函数。这是原始错误消息的来源,因为该类没有默认构造函数。
添加默认构造函数使 NUnit 可以构建您的夹具类,但这仍然不能为您提供运行测试所需的 dbContext。
通常,您可以通过将参数作为参数传递给TestFixtureAttribute
. 在您的情况下,这可能很难做到,并且在 OneTimeSetUp 中为类构造上下文或模拟上下文可能更简单。您做什么取决于您要测试的内容,这在问题中并不清楚。
在您的评论之一中,您提到想要使用“当前的 dbContext”。如果您能进一步解释,这可能是关键。这里的“当前”是什么意思?该上下文是在哪里创建的?然后我们可以弄清楚您的测试如何访问它。
- 2 回答
- 0 关注
- 219 浏览
添加回答
举报