我目前遇到了一个问题,试图在每个被拦截的类实例中连接一个拦截器实例.
我正在InterceptorRegistrationStrategy中创建和建议并设置回调来解析内核中的拦截器(它有一个注入构造函数).请注意,我只能在回调中实例化拦截器,因为InterceptorRegistrationStrategy没有引用内核本身.
IAdvice advice = this.AdviceFactory.Create(methodInfo);
advice.Callback = ((context) => context.Kernel.Get<MyInterceptor>());
this.AdviceRegistry.Register(advice);
Run Code Online (Sandbox Code Playgroud)
我正在获得每个方法的拦截器实例.
是否有任何方法可以为每个被拦截的类型实例创建一个拦截器实例?
我在考虑命名范围,但截获的类型和拦截器不会互相引用.
ninject ioc-container interceptor ninject-2 ninject-extensions
我写了一个简单的代码: -
void * aa = malloc(10 * sizeof(char));
printf("%X\n", aa);
free(aa);
Run Code Online (Sandbox Code Playgroud)
它始终打印??????? 8,我想问的是:malloc总是返回一个4*n的地址吗?为什么这里的最后一个地址总是8?为什么不4或C?我的环境:ubuntu 10.04(32位)gcc版本4.4.3
我们可以考虑将值类型转换(如int转换为浮动转换为upcasting)和float转换为int作为向下转换吗?我相信当我们谈论向上转发和向下倾斜时,我们特别指的是参考转换.
我将System.Net.Http.HttpClient.Net 4.5 中的发现与 CouchDb 结合使用。
我有一个revision文件是:3-789d4d2b33bf4505f8f23fd4a1025a4e.
问题是我无法让它与If-Match请求中的标头标志一起使用。
var req = new HttpRequestMessage(HttpMethod.Delete, url);
req.Headers.IfMatch.Add(
new EntityTagHeaderValue("3-789d4d2b33bf4505f8f23fd4a1025a4e"));
Run Code Online (Sandbox Code Playgroud)
将EntityTagHeaderValue导致格式异常:
“值‘3-789d4d2b33bf4505f8f23fd4a1025a4e’的格式无效。”
我尝试通过以下方式使用纯字符串添加它:req.Headers.Add(string, string),仍然没有运气。
我找到的工作解决方案是:
req.Headers.TryAddWithoutValidation("If-Match", rev);
Run Code Online (Sandbox Code Playgroud)
问题是,对If-Match标题有什么要求?
好吧,我在VS2012中创建了一个F#可移植库项目,并且我有一些代表Utf-32编码字符的整数,例如:0x0001D538这是一个双击A.通常要将它变成Utf-16代理对,你会使用System.Char.ConvertFromUtf32(i),工作完成.但是,Microsoft已经决定不在.net可移植子集中包含此方法.(它在交互式窗口中运行良好,必须运行完整的.net).那么,我应该怎样做才能从这些整数中获得我最喜欢的代理对?它们需要是整数,因为我对它们进行了一些算术运算.等待下一个版本的东西出来是一个可行的选择.
我有一个简单的ViewModel,它包含一些按钮.使用PaP Prism的EventAggregator引发的事件可以更改这些按钮的可见性,这也是此VM的唯一构造函数参数.当我不使用AutoFixture时,相应的测试工作正常.
[Theory]
[InfrastructureAutoData]
public void AllButtonsAreShownWhenVisibilityStatusIsSet(
[Frozen]EventAggregator eventAggregator,
ActionBarViewModel sut)
{
eventAggregator
.GetEvent<ActionButtonActivationEvent>()
.Publish(VisibleActionButtons.All);
sut.CancelButtonVisibility.Should().Be(Visibility.Visible);
sut.BackButtonVisibility.Should().Be(Visibility.Visible);
sut.NextButtonVisibility.Should().Be(Visibility.Visible);
sut.Visiblity.Should().Be(Visibility.Visible);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,它不像这里给出的那样起作用,因为AutoFixture注入ViewModel的EventAggregator实例是另一个实例,而不是注入测试的实例.
public class InfrastructureAutoData : AutoDataAttribute
{
public InfrastructureAutoData()
{
Initialize();
}
private void Initialize()
{
this.Fixture.Customize(new AutoMoqCustomization());
Fixture.Register<IEventAggregator>(() => new EventAggregator());
}
}
public class ActionBarViewModel
{
public ActionBarViewModel(IEventAggregator eventAggregator)
{
eventAggregator.GetEvent<ActionButtonActivationEvent>()
.Subscribe(ActivateButtons);
ActivateButtons(VisibleActionButtons.None);
}
/// <summary>
/// Visibility of a button which cancels the current action.
/// </summary>
public Visibility CancelButtonVisibility { get; private set; }
/// <summary> …Run Code Online (Sandbox Code Playgroud) 我是AutoFixture的新手,我正试图在我的测试环境中为团队中较少TDD的开发者创建一个友好的扩展.这是代码:
public class HomeController : Controller
{
private readonly ISomeService _someService;
public HomeController(ISomeService someService)
{
_someService = someService;
}
public ActionResult Index()
{
_someService.SomeMethod();
return View("Index");
}
}
public class ControllerContext<T> where T : Controller
{
protected static T ControllerUnderTest;
private static IFixture _fixture;
public ControllerContext()
{
_fixture = new Fixture().Customize(new AutoMoqCustomization());
_fixture.Customize<ControllerContext>(c => c.Without(x => x.DisplayMode));
ControllerUnderTest = _fixture.Create<T>();
}
protected static Mock<TDouble> For<TDouble>() where TDouble : class
{
//var mock = _fixture.Create<TDouble>();
var mock = _fixture.Create<Mock<TDouble>>();
return mock; …Run Code Online (Sandbox Code Playgroud) 我重新编写了“事件存储入门”项目,以了解正在发生的事情,现在在测试中,CanSaveExistingAggregate()我收到了WrongExpectedVersionException。问题是,为了尝试弄清楚正在发生的事情,我想知道预期的版本应该是什么,如何找到呢?在测试中,该行将repository.Save(firstSaved, Guid.NewGuid(), d => { });预期的版本计算为101,这是失败的地方:
[Test]
public void CanSaveExistingAggregate()
{
var savedId = SaveTestAggregateWithoutCustomHeaders(repository, 100 /* excludes TestAggregateCreated */);
var firstSaved = repository.GetById<TestAggregate>(savedId);
Console.WriteLine("version:" + firstSaved.Id);
firstSaved.ProduceEvents(50);
repository.Save(firstSaved, Guid.NewGuid(), d => { });
var secondSaved = repository.GetById<TestAggregate>(savedId);
Assert.AreEqual(150, secondSaved.AppliedEventCount);
}
Run Code Online (Sandbox Code Playgroud)
以及引发异常的代码:
public void Save(CommonDomain.IAggregate aggregate, Guid commitId, Action<IDictionary<string, object>> updateHeaders)
{
var commitHeaders = new Dictionary<string, object>
{
{CommitIdHeader, commitId},
{AggregateClrTypeHeader, aggregate.GetType().AssemblyQualifiedName}
};
updateHeaders(commitHeaders);
var streamName = aggregateIdToStreamName(aggregate.GetType(), aggregate.Id);
var newEvents = aggregate.GetUncommittedEvents().Cast<object>().ToList(); …Run Code Online (Sandbox Code Playgroud) 将此代码移植到f#时遇到一些问题
public class MyForm : Form
{
public MyForm ()
{
Text = "My Cross-Platform App";
Size = new Size (200, 200);
Content = new Label { Text = "Hello World!" };
}
[STAThread]
static void Main () {
var app = new Application();
app.Initialized += delegate {
app.MainForm = new MyForm ();
app.MainForm.Show ();
};
app.Run ();
}
}
Run Code Online (Sandbox Code Playgroud)
open System
open Eto.Forms
open Eto.Drawing
type MyWindow()=
inherit Form()
override this.Size = Size(500,500)
override this.Text = "test" // no …Run Code Online (Sandbox Code Playgroud) 我是TDD的新手并且我很想开始使用它,但每当我正在处理的测试用例需要一个尚不存在的类(作为输入或作为输出)时,我都会遇到冲击.
问题是我不知道是否创建没有任何功能的类(是否考虑未经测试的代码?),或者停止测试(当它是绿色时),并开始为这个新的非编写测试 - 现有的课程.
第二种方法似乎是递归的,可能会让我失去思路,而第一种方法创造了一个没有测试的新课程.
有没有第三种方法我没有想到,哪种更好?
c# ×5
autofixture ×2
f# ×2
tdd ×2
automoq ×1
c ×1
class ×1
couchdb ×1
downcast ×1
heap ×1
httpclient ×1
interceptor ×1
malloc ×1
methodology ×1
moq ×1
ninject ×1
ninject-2 ×1
testing ×1
unicode ×1
unit-testing ×1
value-type ×1
xunit.net ×1