gpt4 book ai didi

c# - Unity、Moq 和 NUnit - Controller 构造函数的参数在测试中无法识别

转载 作者:行者123 更新时间:2023-12-03 22:18:09 27 4
gpt4 key购买 nike

我对单元测试非常陌生,所以如果这不是一个很好的问题,我深表歉意。

我有一个主 Web 项目和一个随附的 NUnit 测试库。我正在使用 Unity 将接口(interface)注入(inject)到主项目中的 Controller 中。例如:

    public class EquipmentController : Controller
{
private readonly ILocationRepository locationContext = null;
private readonly IRepository<EquipmentCategory> categoryContext = null;
private readonly IEquipmentRepository equipmentContext = null;
private readonly IRecordRepository recordContext = null;

public EquipmentController(ILocationRepository locationRepo, IRepository<EquipmentCategory> categoryRepo, IEquipmentRepository equipmentRepo, IRecordRepository recordRepo)
{
this.locationContext = locationRepo;
this.categoryContext = categoryRepo;
this.equipmentContext = equipmentRepo;
this.recordContext = recordRepo;
}

网络应用程序本身实际上按预期工作。但是,我在尝试编写测试用例时遇到了问题。例如,在测试库中,我有以下内容:

using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Practices.Unity.Mvc;
using Microsoft.Practices.Unity.ObjectBuilder;
using Microsoft.Practices.Unity.StaticFactory;
using Moq;
using ITEquipmentDatabase;
using ITEquipmentDatabase.Models;
using ITEquipmentDatabase.Controllers;

namespace ITEquipmentDatabase.Tests
{
[TestFixture]
public class EquipmentController
{
[Test]
public void TestMethod()
{
var equipRepo = new Mock<IEquipmentRepository>();
var categoryRepo = new Mock<IRepository<EquipmentCategory>>();
var locationRepo = new Mock<ILocationRepository>();
var recordRepo = new Mock<IRecordRepository>();

EquipmentController controller = new EquipmentController(locationRepo.Object, categoryRepo.Object, equipRepo.Object, recordRepo.Object);



}
}
}

但是,我收到以下错误:

Error   1   'ITEquipmentDatabase.Tests.EquipmentController' does not contain a constructor that takes 4 arguments   C:\Users\Khandokar\Documents\Visual Studio 2013\Projects\IT Equipment Log\ITEquipmentDatabase.Tests\EquipmentController.cs  27  46  ITEquipmentDatabase.Tests

我在我的测试项目中引用了Unity,甚至添加了Bootstrapper.cs(不确定是否有必要,但我正在尝试解决上述问题)。我很确定我做错了一些事情,但我刚刚开始尝试单元测试,并且遇到了一些困难。

感谢您的建议。

最佳答案

您的测试类名为EquipmentController,您的测试类也是如此。

将您的测试类重命名为 EquipmentControllerTests 或类似的名称。

(错误消息是线索;请注意,它指的是 Tests.EquipmentController)。

关于c# - Unity、Moq 和 NUnit - Controller 构造函数的参数在测试中无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43788802/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com