所以我几乎逐字地复制了Moq主页中的示例代码,并且获得了城堡代理异常.
这是我的代码(作为一个更容易的样本的控制台应用程序)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Moq;
namespace MoqTestConsole
{
public interface ILoveThisFramework
{
bool DownloadExists(string s);
}
class Program
{
static void Main(string[] args)
{
Mock<ILoveThisFramework> mock = new Mock<ILoveThisFramework>();
// WOW! No record/replay weirdness?! :)
mock.Setup(framework => framework.DownloadExists("2.0.0.0")).Returns(true);
// Hand mock.Object as a collaborator and exercise it,
// like calling methods on it...
ILoveThisFramework lovable = mock.Object;
bool download = lovable.DownloadExists("2.0.0.0");
// Verify that the given method was indeed called with …Run Code Online (Sandbox Code Playgroud) 在似乎是随机出现的情况下,javascript文件未加载.
我相信这个诊断是正确的,因为a)我有代码要检查,b)我已经完成了代码,并且c)当使用这些文件中的函数时,我得到"'myfunction'未定义"错误.
有时这不会发生一个小时,有时它会在我每次加载页面时发生,有时它会在我加载页面时发生.似乎每当我确定一致的行为,所以我可以重复它并进行诊断,它会发生变化!
有没有人知道可能导致这种情况的原因是什么?
我正在使用 :
现在,它似乎只发生在我的同事和我的开发环境中.
有一个脚本似乎比任何其他脚本都缺少.这是脚本标记.
<script language="javascript"
type="text/javascript"
src="js/Ajax.Utility.js?<%= ConfigurationManager.AppSettings["WebApp.JavaScript.FileVersion"].ToString() %>"></script>
Run Code Online (Sandbox Code Playgroud)
评估为
<script language="javascript"
type="text/javascript"
src="js/Ajax.Utility.js?090324a"></script>
Run Code Online (Sandbox Code Playgroud)
版本查询字符串参数似乎没有任何影响,因为我在更改它之后立即遇到了问题.
我倾向于设计我的类,其属性按照对我有意义的顺序排序.例如; 我总是在开头附近创建像'id'这样的关键信息,然后是更少和更不重要的数据,最后在接近结尾处记录"创建日期"等元数据.
但是当我将类添加到Visual Studio的(2010)类图中时,它按字母顺序对属性进行排序.无论如何要关闭此功能?
编辑(11/05/11):
例如,我有以下课程
public class Email
{
public Int64 Id { get; set; }
public Int64 UserId { get; set; }
public string Name { get; set; }
public string EmailAddress { get; set; }
public DateTime CreateDate { get; set; }
public DateTime UpdateDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是当我将它添加到我的图表时,它按以下顺序显示属性:
CreateDate
EmailAddress
Id
Name
UpdateDate
UserId
Run Code Online (Sandbox Code Playgroud)
而不是我期望的顺序
Id
UserId
Name
EmailAddress
CreateDate
UpdateDate
Run Code Online (Sandbox Code Playgroud) 当我编写应用程序时,我使用System.Data接口(IDbConnection,IDbCommand,IDataReader,IDbDataParameter等...).我这样做是为了减少供应商的依赖性.除非,我正在做一个简单的测试应用程序,在咨询时看起来似乎是道德的事情.
但是,我看到的所有代码似乎都使用System.Data.SqlClient命名空间类或其他特定于供应商的类.在杂志和书籍中,很容易将其归结为微软的影响力以及他们的营销转向仅针对SQLServer进行编程.但它看起来像我看到的几乎所有.NET代码都使用SQLServer特定的类.
我意识到供应商特定的类具有更多功能,例如向SqlCommand对象添加参数是一种方法,其中将其添加到IDbCommand是令人恼火的4+行代码.但话又说回来; 为这些限制编写一个小助手类非常简单.
我还想知道当SQLServer是当前目标客户端时是否对接口进行编程是过度工程的,因为它不是立即需要的.但我不认为这是因为针对接口的编程成本太低,因为减少供应商依赖性提供了如此巨大的好处.
您是否使用供应商特定的数据类或接口?
编辑:总结下面的一些答案,并在阅读时提出一些想法.
使用接口实现供应商中立的可能陷阱:
使用接口的正面理由:
我想在我的应用程序中加入一个MP3并按需播放.不幸的是,我不知道如何开始.我一直在阅读.caf文件,但我不确定它们是什么.
如果可能的话,我正在寻找一步一步.
像地球上的其他每个Web开发人员一样,用户双击表单上的提交按钮时遇到问题.我的理解是,处理这个问题的传统方法是在第一次点击后立即禁用按钮,但是当我这样做时,它不会发布.
我对此做了一些研究,上帝知道有足够的信息,但其他问题,如表单提交上的禁用按钮,禁用按钮似乎工作.提交后禁用按钮的原始海报似乎与我有同样的问题,但没有提及如何/如果他解决它.
这里有一些关于如何重复它的代码(在IE8 Beta2中测试,但在IE7中有同样的问题)
我的aspx代码
<%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<script language="javascript" type="text/javascript">
function btn_onClick()
{
var chk = document.getElementById("chk");
if(chk.checked)
{
var btn = document.getElementById("btn");
btn.disabled = true;
}
}
</script>
<body>
<form id="form1" runat="server">
<asp:Literal ID="lit" Text="--:--:--" runat="server" />
<br />
<asp:Button ID="btn" Text="Submit" runat="server" />
<br />
<input type="checkbox" id="chk" />Disable button on first click
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的cs代码
using …Run Code Online (Sandbox Code Playgroud) 像OneNote这样的软件已经证明可以实现自动保存,并且它与手动保存按钮/ CTRL + S一样好(或更好).
无论如何,你工作的一切都想要保存.它就是你正在尝试一些破坏性的东西,你会关闭而不保存.
因此,从程序员/可用性的角度来看,为什么今天几乎所有软件中都会出现手动"保存"功能?是因为每当数据被修改时,每个人都懒得实现"自动保存"?
对我们实施自动保存是一个好主意,至少在我们的特定行业和竞争对手中引起一些关注?
有没有人知道将GetExceptionInformation()返回的EXCEPTION_POINTERS结构转换为我可以记录的字符串的函数?
如果它已经完成,我不想自己动手.
编辑:基本上,我添加了__try {} __except(){}块来帮助应用程序在严重错误上正常失败.虽然我正在使用它,但我正在尝试记录尽可能详细的错误消息以找到我们要解决的问题.理想情况下,我想打印出文件名和失败的行,但我怀疑这是可能的,所以我希望抛弃所有的异常信息,希望我们能够尽可能接近找出问题的确切原因.
我总是通过FTP(有时甚至是xcopy)部署我的Web应用程序,然后自己手动运行数据库脚本.
我开始在90年代部署这种方式,但最近,我看到了一些带有安装程序的Web应用程序.我开始质疑,如果我被锁定在一个过时的过程中.我是一名顾问,我的应用程序通常是内部的,所以我不担心分发和让其他人安装它们.
但我很好奇; 有人创建安装程序来部署内部asp.net Web应用程序吗?
如果是这样,为什么?(自愿,强制或自动化过程的一部分)
你这样做有什么问题吗?
asp.net ×3
javascript ×2
.net ×1
audio ×1
autosave ×1
c# ×1
c++ ×1
client-side ×1
deployment ×1
exception ×1
filesystems ×1
installer ×1
iphone ×1
mocking ×1
moq ×1
onenote ×1
oop ×1
save ×1
testing ×1
ui-design ×1
unit-testing ×1
visual-c++ ×1
winapi ×1
windows ×1
xcode ×1