目前,我正在使用定制的假对象,这些对象在幕后使用 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) 我是依赖注入模式的新手,我在从容器中获取类的新实例时遇到问题.在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) 这段代码
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)
问题是:为什么?:|
我有一个绑定到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)