当我为对象重载==运算符时,我通常写这样的东西:
public static bool operator ==(MyObject uq1, MyObject uq2) {
if (((object)uq1 == null) || ((object)uq2 == null)) return false;
return uq1.Field1 == uq2.Field1 && uq1.Field2 == uq2.Field2;
}
Run Code Online (Sandbox Code Playgroud)
如果你没有向下转换为对象,那么函数可以自我复制,但我不得不怀疑是否有更好的方法?
我开始对假货,短款,嘲笑和动态嘲笑的想法感到满意.但是我在理解何时使用部分嘲讽时仍然有点不确定.
看起来如果你计划嘲笑服务并且需要求助于部分模拟,那么它就是设计糟糕的标志.是否部分模拟主要用于获取测试覆盖范围内的遗留代码?
另一方面,假设我正在测试一个具有Reset()方法的类.如果我已经在单独的测试中确认Reset()方法有效,并且我有一些类的功能应该以对此方法的调用结束,那么测试设计的部分模拟和运行是否很差对部分模拟进行测试,在Reset()方法上定义Expectation.
我目前以这种方式设置了几个测试,这种事情会让我以后遇到麻烦吗?
这个问题与语言无关,但我是C#家伙所以我使用术语POCO来表示一个只能预先形成数据存储的对象,通常使用getter和setter字段.
我只是将我的领域模型重新设计成超级PCOO,并且对于如何确保属性值在域中有意义而留下了一些问题.
例如,服务的EndDate不应超过服务所在合同的EndDate.但是,将检查放入Service.EndDate设置器似乎违反了SOLID,更不用说随着需要完成的验证数量增加,我的POCO类将变得混乱.
我有一些解决方案(将在答案中发布),但它们有其缺点,我想知道解决这一难题的最佳方法是什么?
language-agnostic separation-of-concerns solid-principles modular-design
我需要向用户TARGETUSER提供选择/插入/更新用户SOURCEUSER的所有表的权限(我可以从这里看出这一切)以及运行所有存储过程的能力.
基本上,如果我能为TARGETUSER提供SOURCE_USER对象的所有非ddl活动的能力,我不会抱怨.我该怎么做呢?
刚刚Assembly.LoadModule()在intellisense中注意到了.我看到它返回对基本未记录的Module类的引用.
我知道反思很好,我从来没有听说过模块吗?这些是什么?这个名字很诱人.
我正在使用Autofac进行Inversion of Control容器,其配置如下
public void Configuration(IAppBuilder app) {
configureIoC(app);
configureAuth(app);
}
void configureIoC(IAppBuilder app) {
var b = new ContainerBuilder();
//...
b.Register(c => HttpContext.Current?.User?.Identity
?? new NullIdentity()).InstancePerLifetimeScope();
var container = b.Build();
app.UseAutofacMiddleware(container);
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
}
Run Code Online (Sandbox Code Playgroud)
我相信这是Autofac与其他容器的事实可能与我所看到的无关.在这里,他们重点线是一个配置上的任何依赖IIdentity从采摘HttpContext.Current.
我这样使用它,这样我就可以随时随地访问当前用户.
public interface ICurrentUser {
Task<AppUser> Get();
}
public class CurrentUserProvider : ICurrentUser {
public async Task<AppUser> Get() => await users.FindByNameAsync(currentLogin.GetUserId());
public CurrentUserProvider(AppUserManager users, IIdentity currentLogin) {
this.users = users;
this.currentLogin = currentLogin;
}
}
Run Code Online (Sandbox Code Playgroud)
我在过去的项目中使用了这种模式,它运行良好.我正在将它应用于现有项目并看到一个非常奇怪的事情. …
我正在使用hash-tag链接实现仅限css的选项卡.我非常接近,但不能让柔性包装正常工作.为了让一切按照我想要的方式工作:target(我之前用单选按钮完成了这个并且提供了更多的灵活性),我需要所有选项卡和所有部分在同一级别,所以我有:
body
section
anchor
section
anchor
...
Run Code Online (Sandbox Code Playgroud)
然后我可以使用flexbox排序使所有锚点首先显示并适当地设置样式,将所有部分设置为宽度100%并使用flex-wrap它们来包装到下一行.问题是我似乎无法控制第一行的高度.这里发生了什么?
body {
display: flex;
flex-direction: row;
flex-wrap: wrap;
margin: 0;
padding: 0;
height: 100vh;
outline: 1px solid green;
}
body > a {
padding: 10px;
margin: 0 5px;
order: -1;
flex-grow: 0;
border: solid gray;
border-width: 1px 1px 0 1px;
}
body > a:last-of-type {
order: -2;
}
section {
flex-grow: 1;
width: 100%;
background-color: cornsilk;
display: none;
border-top: 1px solid grey;
}
section:last-of-type {
display: flex;
} …Run Code Online (Sandbox Code Playgroud)所以在开始之前,我知道如何向网络开放 IISExpress,有很多关于此的文章,我什至写了一篇. 然而,这些方法确实有局限性 - 最明显的是需要添加绑定,我发现这些绑定是偶然的,更糟糕的是,会破坏任何基于主机名执行操作的代码。
我在 Parallels 中运行 Windows 10 的 OsX 上,本周早些时候,我想我应该尝试将 localhost 转发到虚拟机中,就像使用 docker 容器一样。
我已经很接近了,但我不知道最后一步。这是我所做的和我所看到的:
我看到的是,当我localhost:44300从虚拟机内部点击时,我的网站加载良好并且记录了各种内容。
但是当我从主机上点击它时,我得到了
HTTP 错误 403。请求 URL 被禁止。
在这种情况下,iisexpress 没有记录任何内容。
但是,我知道请求以某种方式通过,因为如果我停止 iisexpress 并localhost:44300再次在主机上访问,我会得到标准
本地主机拒绝连接。ERR_CONNECTION_REFUSED
因此,iisexpress 是否在该端口上侦听的事实正在级联到主机虚拟机,但没有其他内容通过。
所以我有点不知所措 - 它几乎看起来有点像一个绑定的东西,但据 iisexpress 所知,由于端口转发,这个请求不是来自吗localhost?它如何判断它是否不是?由于缺乏日志消息,这听起来不太可能。而且我从来没有在提琴手中看到任何弹出的东西。
我想知道是否可能还有其他一些Windows 组件看到绑定到 44300 的东西,看到来自网络堆栈的请求,然后将其关闭。这是一件事吗?
关于netsh http工作原理的文档非常稀少,几乎没有任何可用的在线内容。我们这里有delegate根据文档的参数
指定以下值之一: yes:允许用户委派 URL no:拒绝用户委派 URL。这是默认值。
这到底是什么意思?委托 URL 是什么意思?(或者就此而言,是否有任何地方可以更好地解释 urlacl 的概念?)
编辑:下面是最初与标题一起发布的前一个问题
xunit 在控制台中运行时显示 ITestOutputHelper 输出
经过调查(见评论),这个问题仍然非常相关,需要一个答案,但似乎它应该针对vstest框架和围绕输出接收器而不是 xunit。
现在的具体问题是:当某些内容写入dotnet vstest输出接收器时,如何dotnet test在从命令行运行时显示它。具体来说,我希望能够设置一个观察者dotnet watch来持续运行测试,我更关心输出而不是结果(我将它用作测试系统,而更多地用作开发笔记本)。而且我不想局限于 Visual Studio 或 vscode。
原问题:
在我的测试课上,我有
[Fact]
public void Test() {
output.WriteLine("WHATEVER");
}
readonly ITestOutputHelper output;
public GroceryTests(ITestOutputHelper output) => this.output = output;
Run Code Online (Sandbox Code Playgroud)
当我通过 vscode 编辑器集成运行它时,我可以在“输出”窗格中看到输出。当我通过它运行它时,dotnet test我没有。如何通过控制台显示此输出?
.net ×2
windows ×2
asp.net ×1
asp.net-mvc ×1
c# ×1
css ×1
css3 ×1
equals ×1
flexbox ×1
grant ×1
html ×1
http ×1
iis-express ×1
mocking ×1
networking ×1
oracle ×1
parallels ×1
permissions ×1
reflection ×1
vstest ×1