【问题标题】:Unit Test a method that searches element in db单元测试一种在数据库中搜索元素的方法
【发布时间】:2014-04-25 11:38:23
【问题描述】:

我想对以下类中的方法进行单元测试:

 public class SearchInfo : IDisposable
        {
            public List<SearchResult> SerialResults { get; set; }
            public List<SearchResult> TagResults { get; set; } 
            /// <summary>
            /// Uses the Search string to filter a resultset by Serial and Tag
            /// </summary>
            /// <param name="search"></param>
            public SearchInfo(string search)
            {
                SerialResults = new List<SearchResult>();
                TagResults = new List<SearchResult>();

                SerialResults.AddRange(FindSerial(search));
                TagResults.AddRange(FindTags(search));

            }

            private static IEnumerable<SearchResult> FindTags(string search)
            {

                List<SearchResult> result;
                using (var db = new TIPWebITDataContext())
                {
                    result = (from i in db.tblTechInventories
                              where i.Tag.Equals(search)
                              select new SearchResult()
                                  {
                                      SearchType = "Tag",
                                      Key = i.Tag,
                                      KeyCaption = i.Tag,
                                      Name = i.tblTechItem.ItemName

                                  }).ToList();
                }
                return result;
            }
            private static IEnumerable<SearchResult> FindSerial(string search)
            {
                List<SearchResult> result;
                using (var db = new TIPWebITDataContext())
                {
                    result = (from i in db.tblTechInventories
                              where i.Serial.Contains(search)
                              select new SearchResult()
                              {
                                  SearchType = "Searial",
                                  Key = i.Tag,
                                  KeyCaption = i.Serial,
                                  Name = i.tblTechItem.ItemName

                              }).ToList();
                }
                return result;

            }

            #region Implementation of IDisposable

            public void Dispose()
            {
                SerialResults = null;
                TagResults = null;
            }

            #endregion
        }

        public class SearchResult
        {
            public string SearchType { get; set; }
            public string Key { get; set; }
            public string KeyCaption { get; set; }
            public string Name { get; set; }
        }


    }

注意:

方法Name = FindTags() 返回返回结果。 该方法检查输入的标签是否存在于数据库中。如果可用,则返回结果。

我们将如何对这个方法进行单元测试?

嘲笑了回购 涵盖了“抛出异常”的场景 问题是如何对 ALL WENT WELL 的场景进行单元测试,即用户的 makeModel 与存储库的 makeModel 匹配

【问题讨论】:

    标签: asp.net ajax unit-testing c#-4.0 tdd


    【解决方案1】:

    严格来说,这是一个集成测试,而不是一个单元测试。

    通过单元测试,您可以模拟数据库交互并简单测试代码中的逻辑。

    但是,我很欣赏以这种方式进行测试并自己进行测试更容易。处理这个问题的方法是将测试数据注入到您的数据库中,以提供一致的结果并对此进行断言。如果需要,可以在 TestSetup 中注入此测试数据并在 TestCleanup 中删除。

    【讨论】:

    • 谢谢@ChrisBint。你能建议我上面代码的代码(单元测试)吗?我的意思是,你能生成TestMethod吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 2022-12-04
    • 1970-01-01
    相关资源
    最近更新 更多