gpt4 book ai didi

NUnit + ServiceStack 的 Funq AutoWire 问题

转载 作者:行者123 更新时间:2023-12-02 00:10:59 30 4
gpt4 key购买 nike

我一直在 ServiceStack 3.9.38 项目中测试我的业务逻辑,遇到一个问题:单独运行单元测试会成功,而同时运行测试会导致其中一个失败。几个小时后,我做了一个可重现的单元测试。如果运行整个夹具,第二个测试将失败。单独运行测试使它们通过。

using Funq;
using NUnit.Framework;

[TestFixture]
public class Test
{
interface IBar {}
class Bar : IBar {}
class TestFoo { public IBar Bar { get; set; } }

[Test]
public void Test1()
{
var container = new Container();
var m = new TestFoo();
container.Register<IBar>(new Bar());
Assert.NotNull(container.Resolve<IBar>(), "Resolve");
container.AutoWire(m);
Assert.NotNull(m.Bar, "Autowire");
}

[Test]
public void Test2()
{
var container = new Container();
var m = new TestFoo();
container.AutoWire(m);
Assert.Throws<ResolutionException>(() => container.Resolve<IBar>());
Assert.IsNull(m.Bar); // FAILS HERE
}
}

这是 Funq.Container 配置的问题吗?或者这是一个错误?有什么解决方法吗?

编辑:我在 GitHub 上发布了一个问题:https://github.com/ServiceStack/ServiceStack/issues/521

最佳答案

AutoWireHelpers.cs 有一个私有(private)静态字典autoWireCache那是缓存你的决议当你运行两次测试时,值从缓存中提取并且你的测试失败。我相信缓存是 ServiceStack 为提高性能而定制的 funq 的一个特性。

没有用于清除该缓存的公共(public)接口(interface),因此我看不到您设置测试的方式的快速解决方案。

关于NUnit + ServiceStack 的 Funq AutoWire 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15431310/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com