枚举器& # 39;更新# 39;类不包含定义,但只包含单元测试方法的定义,而不包含在DAL项目中使用的定义

本文关键字:包含 定义 DAL 项目 单元 枚举 更新 测试方法 | 更新日期: 2023-09-27 18:13:18

我试图在我的DAL层/项目内的DAO (EmployeeDAO.cs)中运行更新方法的单元测试。在EmployeeDAO.cs类中,我的Update方法

public UpdateStatus Update(Employee emp)
    {
        UpdateStatus status = UpdateStatus.Failed;
        HelpdeskRepository repo = new HelpdeskRepository(new DbContext());
        try
        {
            DbContext ctx = new DbContext();
            var builder = Builders<Employee>.Filter;
            var filter = Builders<Employee>.Filter.Eq("Id", emp.Id) & Builders<Employee>.Filter.Eq("Version", emp.Version);
            var update = Builders<Employee>.Update
                .Set("DepartmentId", emp.DepartmentId)
                .Set("Email", emp.Email)
                .Set("Firstname", emp.Firstname)
                .Set("Lastname", emp.Lastname)
                .Set("Phoneno", emp.Phoneno)
                .Set("Title", emp.Title)
                .Inc("Version", 1);
            var result = ctx.Employees.UpdateOne(filter, update);
            status = repo.Update(emp.Id.ToString(), filter, update);
            //ask how to get status to work in MatchedCount/Modified count so we don't need DbContext use
            if (result.MatchedCount == 0) //if zero version didn't match
            {
                status = UpdateStatus.Stale;
            }
            else if (result.ModifiedCount == 1)
            {
                status = UpdateStatus.Ok;
            }
            else
            {
                status = UpdateStatus.Failed;
            }
        }
        catch (Exception ex)
        {
            DALUtils.ErrorRoutine(ex, "EmployeeDAO", "UpdateWithRepo");
        }
        return status;
    }

似乎工作得很好,编译器没有检测到任何错误。但是,当我尝试在相同解决方案中的EmployeeDAOTests.cs/UnitTestProject中的此方法中对其进行一些单元测试时,

[TestMethod]
    public void TestUpdateShouldReturnOK()
    {
        EmployeeDAO dao = new EmployeeDAO();
        Employee emp = dao.GetById(eid);
        emp.Phoneno = "(555)555-9999";
        Assert.IsTrue(dao.Update(emp) == UpdateStatus.OK);
    }

它告诉我

(CS0117)"'UpdateStatus'不包含'OK'的定义"

,在这里可以看到,它显然有一个OK的定义,似乎在我实际的DAO中使用是有效的:

public enum UpdateStatus
{

    Ok = 1,
    Failed = -1,
    Stale = -2
};

另一方面,当我按照定义Ok、Failed和Stale的顺序进行交易时,它不再导致单元测试错误,但开始导致DAO错误!

很困惑,有人有什么意见吗?

枚举器& # 39;更新# 39;类不包含定义,但只包含单元测试方法的定义,而不包含在DAL项目中使用的定义

这是一个小错误:)UpdateStatus。OK应该是UpdateStatus。好的:)