小编Rub*_*ink的帖子

Ninject:每个类实例被拦截一个拦截器实例?

我目前遇到了一个问题,试图在每个被拦截的类实例中连接一个拦截器实例.

我正在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

2
推荐指数
1
解决办法
1137
查看次数

为什么malloc总是返回0x的地址??????? 8

我写了一个简单的代码: -

 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

c heap malloc

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

C#中的向上转换

我们可以考虑将值类型转换(如int转换为浮动转换为upcasting)和float转换为int作为向下转换吗?我相信当我们谈论向上转发和向下倾斜时,我们特别指的是参考转换.

c# value-type downcast

2
推荐指数
1
解决办法
649
查看次数

C#、HTTPClient - IfMatch 格式要求?

我将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标题有什么要求?

c# couchdb httpclient

2
推荐指数
1
解决办法
2377
查看次数

F#.Net可移植子集Unicode问题

好吧,我在VS2012中创建了一个F#可移植库项目,并且我有一些代表Utf-32编码字符的整数,例如:0x0001D538这是一个双击A.通常要将它变成Utf-16代理对,你会使用System.Char.ConvertFromUtf32(i),工作完成.但是,Microsoft已经决定不在.net可移植子集中包含此方法.(它在交互式窗口中运行良好,必须运行完整的.net).那么,我应该怎样做才能从这些整数中获得我最喜欢的代理对?它们需要是整数,因为我对它们进行了一些算术运算.等待下一个版本的东西出来是一个可行的选择.

unicode f# portable-class-library

2
推荐指数
1
解决办法
115
查看次数

AutoFixture.Xunit的[Frozen]无效

我有一个简单的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)

c# xunit.net autofixture automoq

2
推荐指数
1
解决办法
870
查看次数

管理通过AutoFixture在通用测试助手中输入MVC控制器的服务

我是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)

c# tdd moq autofixture

2
推荐指数
1
解决办法
553
查看次数

EventStore入门项目上的WrongExpectedVersionException

我重新编写了“事件存储入门”项目,以了解正在发生的事情,现在在测试中,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)

get-event-store

2
推荐指数
1
解决办法
997
查看次数

处理2个编译器错误,将C#转换为F#

将此代码移植到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)

c# f#

2
推荐指数
1
解决办法
124
查看次数

TDD应该为测试用例创建一个空类吗?

我是TDD的新手并且我很想开始使用它,但每当我正在处理的测试用例需要一个尚不存在的类(作为输入或作为输出)时,我都会遇到冲击.

问题是我不知道是否创建没有任何功能的类(是否考虑未经测试的代码?),或者停止测试(当它是绿色时),并开始为这个新的非编写测试 - 现有的课程.

第二种方法似乎是递归的,可能会让我失去思路,而第一种方法创造了一个没有测试的新课程.

有没有第三种方法我没有想到,哪种更好?

testing tdd methodology unit-testing class

2
推荐指数
1
解决办法
284
查看次数