这可能听起来很蹩脚,但我还没有找到一个非常好的解释Aggregate.
良好意味着简短,描述性,全面,有一个小而明确的例子.
我想写这样的东西:
myStub.Stub(_ => _.Create(Arg<Invoice>.It.Anything)).Callback(i => { i.Id = 100; return i; });
Run Code Online (Sandbox Code Playgroud)
我想获得传递给mock的实际对象,修改它并返回.
这种情况是否适用于Rhino Mocks?
在同一个解决方案中,有一个ASP.NET MVC4应用程序Slick.App和类库Awesome.Mvc.Lib.Awesome.Mvc.Lib包含一个控制器类.
public class ShinnyController : Controller
{
[HttpGet]
public string Index()
{
return "Hello, from Awesome.Mvc.Lib";
}
}
Run Code Online (Sandbox Code Playgroud)
如果我只是将Slick.App的引用添加到Awesome.Mvc.Lib,运行应用程序并指向浏览器/shinny,我将实际看到响应"Hello,来自Awesome.Mvc.Lib".
这是我根本没想到的.我一直认为ASP.NET MVC尊重控制器所在的命名空间.因此,至少在我没有要求之前,来自其他命名空间的控制器都没有暴露.
我尝试更改默认路由注册,以使用namespaces参数.
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new [] { "Slick.App.Controllers" }
);
Run Code Online (Sandbox Code Playgroud)
尽管如此,ShinnyController路线仍然匹配'/ shinny'.
我担心这是正确的默认行为.我的问题是,如何明确说明暴露了哪些控制器并阻止默认路由匹配单独的类库中的控制器?
说,我有这样的类层次结构:
public interface IRepository { }
public class SomeSimpleRepository : IRepository {}
Run Code Online (Sandbox Code Playgroud)
现在我想用其他函数"装饰"SomeSimpleRepository
public class MoreAdvancedRespository : IRepository
{
private readonly IRepository _originalRepository;
public MoreAdvancedRespository(IRepository original)
{ }
}
Run Code Online (Sandbox Code Playgroud)
过了一会又一个......
public class TrickyRepository : IRepository
{
private readonly IRepository _originalRepository;
public TrickyRepository (IRepository original)
{ }
}
Run Code Online (Sandbox Code Playgroud)
现在,我需要完成绑定.在应用程序中,我需要使用MoreAdvancedRespository初始化TrickyRepository的实例.所以,我需要写一些类似的东西:
Bind<IRepository>().To<TrickyRepository>.With ??
Run Code Online (Sandbox Code Playgroud)
在这里我很困惑,我需要以某种方式说,采取MoreAdvancedRespository,但用SomeSimpleRepository初始化它.这是一种依赖关系链,必须针对一个接口进行解析.
有没有人对此提出建议?
我只是想着造型和性能.以前我曾经写过类似的东西,
var strings = new List<string> { "a", "b", "c" };
var ints = new List<int> { 1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
但现在我更倾向于喜欢这种风格,
var strings = new [] { "a", "b", "c" }.ToList();
var ints = new [] { 1, 2, 3}.ToList();
Run Code Online (Sandbox Code Playgroud)
我更喜欢第二种风格,但现在正在考虑 - 是否真的值得这样写它或者它不是那么有效并且需要更多操作?
我目前正在研究基于Redux/React的应用程序的测试方法.我参加了关于测试的redux教程,但仍然有疑问:
是否有意义测试纯动作的创造者,刚刚返回与对象type和payload领域?对我来说,它闻起来就像getter/setterOO应用程序中的测试.
在测试异步操作的情况下,您是否应该检查相应的成功操作并进行调度?再次,对于模拟的HTTP请求,它似乎只是测试模拟容器,而不是应用程序行为.
测试应该集中在减速器上,因为它们负责状态转换,是连接组件行为的手段吗?
也许不是测试应用程序的redux内核,而是应该在组件级别上进行更多测试?组件的哪些方面应该在何时测试?那些测试是否脆弱?
我想听听一些在生产中使用Redux/React并积极练习测试的人的经验.
我可能想要太多,但我的情景是
public dynamic CreateConfigObject(JobConfigurationModel config) {
dynamic configObject = new { };
configObject.Git = new GitCheckout {
Repository = config.Github.Url
};
return configObject;
}
Run Code Online (Sandbox Code Playgroud)
当然,它失败了,configObject.Git因为这个属性不存在.我希望能够在运行时添加任意数量的属性,而不需要预先知道属性的数量和名称;
这种情况在C#中是否可能,或者我的JavaScript想象力开始伤害我?:)
NancyFX是否支持像"Catch All"路由的ASP.NET MVC?我需要一个,基本匹配每个URL.这对于构建单页应用程序非常方便.
那可能吗?
在GitHub的 API提供的功能来获得由创建日期排序盯着项目.但是,我找不到这个约会的可能性.
响应中只有三个日期类型字段:
created_at: '2013-06-13T21:10:36Z',
updated_at: '2013-06-18T07:45:56Z',
pushed_at: '2013-06-17T16:52:44Z',
Run Code Online (Sandbox Code Playgroud)
create_at这里始终是存储库创建的日期,而不是星标.updated_at也没有提供正确的信息.
在GitHub网站上,如果您检查星标,数据会正确排序并呈现正确的时间跨度.但看起来API错过了这些信息.
这个要点清楚地表明,数据返回"排序",但是created_at错误.
我正在测试HTML5离线应用程序.为此,我将停止本地Web服务器(IIS)并打开应用程序.它加载正常,但一旦请求服务器端API方法就失败了.
我想阻止它,而不是$ .get('/ api/method')从我的本地存储中读取数据.但我可以找到任何设施来了解我的应用程序是否脱机.
if (/* online */) {
// fire ajax
} else {
// ask localstorage
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用navigation.onLine但似乎总是如此(至少我可以在Chrome中看到).
你有什么建议吗?
编辑:考虑到当前的答案.应用程序清楚地知道它是脱机的,因为它根据cache.manifest占用资源.这对我来说太荒谬了,客户需要做任何诡计和伎俩.我认为应该有一种简单的方法来检查当前模式.
.net ×6
c# ×5
asp.net ×1
asp.net-mvc ×1
decorator ×1
dynamic ×1
github-api ×1
html5 ×1
javascript ×1
linq ×1
nancy ×1
ninject ×1
offline-mode ×1
performance ×1
reactjs ×1
redux ×1
rhino-mocks ×1
tdd ×1
unit-testing ×1
url-routing ×1