单元测试在db中搜索元素的方法

时间:2014-04-25 11:38:23

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

我想为以下类中的方法执行单元测试:

 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()返回返回结果。 该方法检查输入的标签是否存在于数据库中。如果可用则返回结果。

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

嘲笑了回购 涵盖了&#34; THROWS EXCEPTION&#34; 问题是如何对所有WENT WELL即用户的场景进行单元测试; s makeModel与存储库的makeModel

匹配

1 个答案:

答案 0 :(得分:0)

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

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

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