我有一个服务器应用程序,我想知道如果我想开始实现TDD和使用Moq我应该从哪里开始.
我能读到哪些关于这个主题的好书,哪些不太"面向网络"?
我对此事有疑问,例如:
我应该模拟我想要测试的每个对象,还是只有那些我无法实现的对象,比如文本编写者?
我的服务器需要进行大量的设置才能真正做我想要测试的任何事情,我应该把它塞进一个[TestInitialize]函数中吗?
如果我想测试更深入的功能,我应该如何链接我的测试?
如int,long,ushort,uint,short,等.
为什么没有一个简短的手System.DateTime?
我有一个设计精良的架构,控制器访问服务,这些服务访问与数据库通信的存储库.
因此,控制器中的逻辑保持在最低限度,但我仍然有非常微妙的代码片段来执行某些任务
一些较长的情况根据服务返回的"状态"执行不同的操作.
这里有几个例子:
[HttpPost]
[AjaxOnly]
[Authorize]
public JsonResult Preview(string input)
{
LinkResult parsed = linkService.ParseUserInput(input);
if (parsed.Result == LinkParseResult.Used)
{
long? postId = parsed.Link.PostId;
if (postId.HasValue)
{
Post post = postService.GetById(postId.Value, false);
return Json(new
{
faulted = "used",
link = DetailsRoute(post),
id = postId
});
}
else
{
return Json(new { faulted = "invalid" });
}
}
else if (parsed.Result == LinkParseResult.Invalid)
{
return Json(new { faulted = "invalid" });
}
else
{ …Run Code Online (Sandbox Code Playgroud) 我正在尝试反序列化,Generic<T> where T : struct但是当我调用时,ctor.Invoke(args); 我得到异常"无法创建实例,因为Type.ContainsGenericParameters为true".
如何传递我想要的泛型类型?
我想要一个正则表达式,如果它.在字符串中有3个实例,那么它会做一件事,如果它有超过3个实例则需要其他东西.
例如
aaa.bbb.ccc.ddd // one part of the regex
aaa.bbb.ccc.ddd.eee // the second part of the regex
Run Code Online (Sandbox Code Playgroud)
我怎么在这两种实现这一点js还是c#?
就像是
?(\.){4} then THIS else THAT
Run Code Online (Sandbox Code Playgroud)
在正则表达式内......
更新
好吧基本上我正在做的是这样的:
我希望将任何给定的切换System.Uri到扩展方法中的另一个子域.
我遇到的问题是我的域通常是形式http://subdomain.domain.TLD.TLD/more/url,但有时,它可能只是http://domain.TLD.TLD/more/url(它只是指向www)
所以这就是我提出的:
public static class UriExtensions
{
private const string TopLevelDomainRegex = @"(\.[^\.]{2,3}|\.[^\.]{2,3}\.[^\.]{2,3})$";
private const string UnspecifiedSubdomainRegex = @"^((http[s]?|ftp):\/\/)(()([^:\/\s]+))(:([^\/]*))?((?:\/)?|(?:\/)(((\w+)*\/)([\w\-\.]+[^#?\s]+)(\?([^#]*))?(#(.*))?))?$";
private const string SpecifiedSubdomainRegex = @"^((http[s]?|ftp):\/\/)(([^.:\/\s]*)[\.]([^:\/\s]+))(:([^\/]*))?((?:\/)?|(?:\/)(((\w+)*\/)([\w\-\.]+[^#?\s]+)(\?([^#]*))?(#(.*))?))?$";
public static string AbsolutePathToSubdomain(this Uri uri, string subdomain)
{
subdomain = subdomain == …Run Code Online (Sandbox Code Playgroud) 在向node.js应用程序发出DELETE请求之前,是否需要设置任何配置?
我可以做GET,POST或PUT请求,但DELETE请求将无法正常工作.
DELETE http://localhost:8081/api/1.0/entryundefined来自路由记录器的收益,我用express来注册路由.但看起来我甚至无法解析url /动词.
这就是我调用它的方式:
rows.find('a.remove').on('click', function(){
$.ajax({
url: '/api/1.0/entry',
type: 'DELETE'
}).done(function(res){
var row = $(this).parentsUntil('tbody');
row.slideUp();
});
});
Run Code Online (Sandbox Code Playgroud)
样本日志
GET / 200 18ms
GET /author/entry 200 10ms
GET /api/1.0/entry 200 2ms
GET /api/1.0/entry 200 1ms
GET /api/1.0/entry 200 1ms
undefined
Run Code Online (Sandbox Code Playgroud) 我正在使用Dragula在Ember中创建一组拖放组件.我将项目列表传递给包含多个可丢弃存储桶的父包装器.最初过滤此项目列表,以便它们在正确的存储桶中呈现正确的项目.然后将Dragula连接起来,以便可以拖放项目.当发生drop事件时,我尝试更新底层的Ember对象.这可能导致重新应用过滤器并进行一些渲染.问题是DOM已被Dragula操纵,并且与Ember认为它应该是不同的并且DOM节点刚刚消失.
当他们认为自己拥有DOM及其当前代表时,我怎么能让Ember和Dragula玩得很好?我已经尝试取消了draggle drop事件,然后让Ember设置了有限的成功值.
dnd-wrapper/template.hbs
{{yield (action "register")}}
Run Code Online (Sandbox Code Playgroud)
dnd-wrapper/component.js
export default Ember.Component.extend({
drake: null,
buckets: [],
items: [],
initDragula: Ember.on('willInsertElement', function() {
this.set('drake', window.dragula());
}),
setupDragulaEvents: Ember.on('didInsertElement', function() {
this.get('drake').on('drop', (itemEl, destinationEl, sourceEl) => {
let dest = this.buckets.findBy('element', destinationEl);
let source = this.buckets.findBy('element', sourceEl);
let item = this.items.findBy('element', itemEl);
item.component.set('item.bucket', dest.component.get('value'));
});
}),
actions: {
register(type, obj) {
if(type === 'bucket') {
this.get('drake').containers.push(obj.element);
this.buckets.pushObject(obj);
}
else {
this.items.pushObject(obj);
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
dnd-bucket/template.hbs
<h2>bucket {{value}}</h2>
<ul>
{{#each filteredItems as |item|}} …Run Code Online (Sandbox Code Playgroud) 我在考虑表现
.click() VS .live("click")
这让我想知道.live是如何运作的.
它是否监视DOM更改以及何时检测到DOM中的更改它只是附加事件然后,它是否使用某种计时器(我不这么认为,但如果这样做非常重要,计时器会让我感到难过人)
我有一个商业项目,我将根据用剃刀制作的模板创建电子邮件.我怎样才能获得剃刀智能感知?它是否像包含一些组件一样简单,或者我需要做一些更多反驳的事情?
这是为了使用RazorEngine库.
c# ×7
.net ×2
jquery ×2
controller ×1
dom ×1
dragula ×1
ember.js ×1
express ×1
generics ×1
http ×1
intellisense ×1
javascript ×1
moq ×1
node.js ×1
razor ×1
refactoring ×1
reflection ×1
regex ×1
rest ×1
tdd ×1
unit-testing ×1