小编Tea*_*Dev的帖子

AutoFixture 新手,试图了解它,但我看不到它对我有帮助

目前,我正在使用定制的假对象,这些对象在幕后使用 NSubstitute 创建实际对象,但随着项目的发展,它变得非常难以维护,所以我正在尝试寻找替代方案,我希望 AutoFixture 是适合这项工作的工具。

我阅读了文档,但我很挣扎,因为文档很少甚至没有,而且我阅读了 Mark Seemann 的大部分博客文章,包括 CheatSheet。

我很难掌握的一件事是如何使用带有参数的构造函数创建一个对象,在我的例子中,我需要将参数传递给 CsEmbeddedRazorViewEngine 以及将 HttpRequestBase 传递给 ControllerContext。

我的看法是,我需要创建一个假对象,最后创建一个将它们注入到的自定义对象

我还研究了 NBuilder,在那里传递参数似乎稍微微不足道,但我听说过有关 AutoFixture 的好消息,我想尝试一下。:)

我正在尝试减少假物体的数量,所以这是一个真正的测试,我如何使用 AutoFixture 做同样的事情?

[Theory, 
 InlineData("en-US"), 
 InlineData("en-us"), 
 InlineData("en")]
public void Should_return_the_default_path_of_the_view_for_enUS(string language)
{
    // Arrange
    const string EXPECTED_VIEW_PATH = "~/MyAssemblyName/Views/Home/Index.cshtml";

    CsEmbeddedRazorViewEngine engine = CsEmbeddedRazorViewEngineFactory.Create(ASSEMBLY_NAME, VIEW_PATH, string.Empty);

    string[] userLanguage = { language };

    HttpRequestBase request = FakeHttpRequestFactory.Create(userLanguage);

    ControllerContext controllerContext = FakeControllerContextFactory.Create(request);

    // Act
    ViewEngineResult result = engine.FindPartialView(controllerContext, VIEW_NAME, false);

    // Assert
    RazorView razorView = (RazorView)result.View;

    string actualViewPath = razorView.ViewPath;

    actualViewPath.Should().Be(EXPECTED_VIEW_PATH);
} …
Run Code Online (Sandbox Code Playgroud)

autofixture

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

TinyIoC返回相同的实例

我是依赖注入模式的新手,我在从容器中获取类的新实例时遇到问题.在tinyioc中解析它只是继续返回相同的实例而不是新实例.现在为代码

public abstract class HObjectBase : Object
{
    private string _name = String.Empty;
    public string Name 
    {
        get
        {
            return this._name;
        }
        set
        {
            if (this._name == string.Empty && value.Length > 0 && value != String.Empty)
                this._name = value;
            else if (value.Length < 1 && value == String.Empty)
                throw new FieldAccessException("Objects names cannot be blank");
            else
                throw new FieldAccessException("Once the internal name of an object has been set it cannot be changed");
        }
    }

    private Guid _id = new Guid(); …
Run Code Online (Sandbox Code Playgroud)

dependency-injection tinyioc

0
推荐指数
1
解决办法
603
查看次数

调用函数时F#类型不匹配

这段代码

let rec readNLines n list =
 if n = 0 then
  list
 else 
  readNLines(n-1,readInt()::list)
Run Code Online (Sandbox Code Playgroud)

以..结束

Type mismatch. Expecting a 'a but given a 'a -> 'a    
The resulting type would be infinite when unifying ''a' and
''a -> 'a' (using built-in F# compiler)
Run Code Online (Sandbox Code Playgroud)

但是当最后一行改为时运行正常

  readNLines(n-1,(readInt()::list))
Run Code Online (Sandbox Code Playgroud)

要么

  readNLines(n-1)(readInt()::list)
Run Code Online (Sandbox Code Playgroud)

问题是:为什么?:|

f#

0
推荐指数
1
解决办法
287
查看次数

继承基类实现接口INotifyPropertyChanged可以让子类使用它

我有一个绑定到ObservableCollection的数据网格.我想知道什么时候改变房产.我在同一个应用程序中有一个类似的数据网格,我有这个工作.但是,此数据网格绑定到从另一个类继承的类.

所以下面是一个简单的代码片段.

在我的孩子,我必须实现INotifyPropertyChanged接口,虽然这对我来说似乎有点痛苦,并没有真正利用继承.我可以简单地将OnPropertyChanged公开或者是错误的吗?

基类

class Animal : INotifyPropertyChanged
{
     public int Age
     { 
         get 
         { return _age;}
         set 
         { 
            _age = value;
            OnPropertyChanged("Age");
         }
     }

     int _age

     public event PropertyChangedEventHandler PropertyChanged;

        void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }

}
Run Code Online (Sandbox Code Playgroud)

儿童班

class Dog : Animal
{
    public bool Fleas
     { 
         get 
         { return _fleas;}
         set 
         { 
            _fleas = value;
         }
     }

     int _fleas

}
Run Code Online (Sandbox Code Playgroud)

.net c# wpf

0
推荐指数
1
解决办法
475
查看次数

标签 统计

.net ×1

autofixture ×1

c# ×1

dependency-injection ×1

f# ×1

tinyioc ×1

wpf ×1