我尝试模拟HttpFileCollectionBase实例的Count-Property - 但不知何故它不起作用.
var fakedRequest = new Mock<HttpRequestBase>();
var fakedFile = new Mock<HttpPostedFileBase>();
fakedFile.SetupGet(x => x.InputStream).Returns(inputStream);
var fakedFileCollection = new Mock<HttpFileCollectionBase>();
fakedFileCollection.SetupGet(x => x.Count).Returns(1);
fakedRequest.SetupGet(x => x.Files).Returns(fakedFileCollection.Object);
fakedRequest.SetupGet(x => x.Files[0]).Returns(fakedFile.Object);
var sut = new TestableExploreController(null, fakedTemporaryStorageRepository.Object)
{
HttpRequest = fakedRequest.Object
};
Run Code Online (Sandbox Code Playgroud)
如你所见,我创建了一个模拟的HttpRequest,我将其注入到被测系统中.Count-Property被定义为返回1 - 但它总是返回0.我正在使用Moq.
我究竟做错了什么?
我已经实现了搜索查询。它用“规范化”字符代替特殊字符。我已将此规则应用于其他领域。实际上,查询看起来非常丑陋,并且充满了DRY违规行为。
但是,对此重新设置似乎并不容易(对我而言)。当然,我只是试图将整个Replace-Stuff重构为一个单独的方法,但这导致了类似的错误
LINQ to Entities无法识别方法'System.String Help(System.String)'方法,并且该方法无法转换为商店表示...
下面的代码显示了查询的一部分,其中包含更多这样的语句。如果有人有一个想法,要使它更好,那就太好了!
qry = qry.Where(guest =>
(guest.FirstName
.Replace("ü", "u").Replace("ue", "u").Replace("û", "u").Replace("ù", "u").Replace("ú", "u")
.Replace("ä", "a").Replace("ae", "a").Replace("â", "a").Replace("à", "a").Replace("á", "a")
.Replace("ë", "e").Replace("ê", "e").Replace("è", "e").Replace("é", "e")
.Replace("ö", "o").Replace("oe", "o").Replace("ô", "o").Replace("ò", "o").Replace("ó", "o")
.Replace("ï", "i").Replace("ì", "i").Replace("ì", "i").Replace("í", "i")
.Replace("ç", "c")
.Replace(".", "").Replace("-", "").Replace("_", "").Replace("´", "").Replace("'", "").Replace("\"", "")
.Replace("(", "").Replace(")", "").Replace("[", "").Replace("]", "").Replace("{", "").Replace("}", "")
.Replace("$", "").Replace("+", "").Replace("*", "").Replace("@", "")
.Replace("|", "").Replace("\\", "").Replace("/", "").Replace("<", "").Replace(">", "")
.Replace(".", "").Replace(",", "").Replace(";", "").Replace(":", "")
.Replace("=", "").Replace("%", "").Replace("^", "").Replace("?", "").Replace("!", "")
.StartsWith(firstName)
&& …Run Code Online (Sandbox Code Playgroud)