小编Pon*_*nes的帖子

是否有可能"重载"uritemplates?

        [OperationContract]
    [WebGet(UriTemplate = "/searchresults/{searchTerm}/{searchType}", ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare)]
    Message GetSearchResults(string searchTerm, string searchType);

    [OperationContract]
    [WebGet(UriTemplate = "/searchresults/{searchTerm}", ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare)]
    Message GetSearchResults(string searchTerm);
Run Code Online (Sandbox Code Playgroud)

这是否可能 - 如果没有,有人可以提出替代方案吗?

wcf uritemplate

8
推荐指数
1
解决办法
5282
查看次数

单元测试在调试时通过,但在运行时失败

搜索方法返回任何匹配的文章和最新的非匹配文章,直到指定的数字.

在返回之前,匹配文章的IsMatch属性设置为true,如下所示:

articles = matchingArticles.Select(c => {c.IsMatch = true; return c;}).ToList();

在测试这种方法时,

    [Test]
    public void SearchForArticle1Returns1MatchingArticleFirstInTheList()
    {
        using (var session = _sessionFactory.OpenSession())
        {
            var maxResults = 10;
            var searchPhrase = "Article1";
            IArticleRepository articleRepository = new ArticleRepository(session);
            var articles = articleRepository.GetSearchResultSet(searchPhrase, maxResults);
            Assert.AreEqual(10, articles.Count);
            Assert.AreEqual(1, articles.Where(a => a.Title.Contains(searchPhrase)).Count());
            var article = articles[0];
            Assert.IsTrue(article.Title.Contains(searchPhrase));
            Assert.IsTrue(article.IsMatch);
        }
    }
Run Code Online (Sandbox Code Playgroud)

在调试中运行测试时,所有断言都会通过,但是在发布中运行测试时,最终断言会失败:

预期:真实但是:是的

在应用程序本身,响应是正确的.

关于为什么会发生这种情况的任何想法?

编辑:

我弄清楚问题是什么.这基本上是一种竞争条件.当我设置测试时,我正在删除db表,重新创建它并用测试数据填充它.由于搜索依赖于全文搜索,因此我在相关列上创建文本索引并将其设置为自动填充.当在调试中运行时,似乎有足够的时间来填充文本索引,并且搜索查询返回匹配项.当我运行测试时,我不认为索引已经及时填充,没有返回匹配并且测试失败.它与日期时间问题类似.如果我在创建目录和运行测试之间设置延迟,则测试通过.

c# testing debugging unit-testing

4
推荐指数
2
解决办法
8819
查看次数

标签 统计

c# ×1

debugging ×1

testing ×1

unit-testing ×1

uritemplate ×1

wcf ×1