我需要有关与ASP.NET MVC一起使用的良好单元测试手册的建议.基于您实际阅读和使用的书籍(您的圣经),您推荐什么?
我不知道jQuery(文档)在这里.我以为你总是用$(文件)
我的同事基于我的一个类(它是一个实例类)告诉我,如果你的类中没有字段(支持字段),只需在类中使所有方法都是静态的,或者让类成为单例,这样你就可以了不必使用关键字new来调用此BL类中的方法.
我认为这是常见且良好的做法?基本OOP?我只是想看看人们对此的看法.
我认为基本上他说的是因为没有状态,所以不需要将方法作为实例方法.
在这种情况下,我不确定每次作为一个选项让它成为一个单身......是他给我的某种模式或好建议吗?
这是我正在讨论的类(请不要在此主题中重新发布任何代码,这是私有的):http://www.elbalazo.net/post/class.txt
我知道你应该总是检查传入的params到null的方法.但是,如果我有一个try/catch引用局部变量的情况怎么办?我真的需要在下面检查空吗?因为无论如何它都会捕获它,如果它为null并且下一行代码试图使用refundResponse变量:
public string DoRefund(...)
{
try
{
......
string refundTransactionID = string.Empty;
......
RefundTransactionResponseType refundResponse = transaction.DoRefund(...);
if (refundResponse != null)
refundTransactionID = refundResponse.RefundTransactionID;
.....
}
catch (Exception ex)
{
LogError(ex);
return ex.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
请记住,我正在专门讨论局部变量并检查方法中的那些变量,而不是方法的传入参数.
我在这里要求的是我在设置refundTransactionID之前是否需要检查null,或者我只是设置它而不假设编译器将处理并抛出如果它为null将被捕获并作为字符串返回到在这种情况下打电话.
或应该是
if (refundResponse == null)
return null;
Run Code Online (Sandbox Code Playgroud)
或者只是完全检查这个局部变量赋值,然后在这种情况下,我有一个try/catch我正在处理编译器选择的任何异常,通过将异常作为字符串返回给调用者(它不是我决定寄回一个字符串,这是我老板的要求......所以现在绕过那个辩论):
refundTransactionID = refundResponse.RefundTransactionID;
Run Code Online (Sandbox Code Playgroud)
最终,该方法中的其他代码依赖于有效的refundTransactionID.
我知道你可以从使用中反序列化一个JSON对象但是反过来呢?我查看了MSDN页面,我不知道你是否可以序列化到JSON对象,有谁知道?HttpWebResponseWebClient.DownloadString()
我们在web.config中指定了一些HTTP处理程序.当我们通过网站项目运行这个网站时,一切正常.但由于某种原因,在将其移植到WAP项目并指向.NET 3.5框架之后,当我在开发框中的IIS 7中启动网站时,处理程序无法正常工作.除了我的web.config中已存在的指定自定义处理程序之外,我是否需要在IIS7中执行一些特殊操作?
当我在IIS 7中查看我们站点的Handler Mappings部分时,我确实看到了使用我们的自定义扩展列出的3个处理程序.所以看起来它正在拾取我们在web.config中指定的处理程序.但我知道在非WAP网站上工作的处理程序不在这个WAP项目中工作,我不知道为什么.
例如,当我们的一个处理程序在引用时尝试启动时,我得到:
'/'应用程序中的服务器错误.分析程序错误说明:解析为此请求提供服务所需的资源时发生错误.请查看以下特定的解析错误详细信息并相应地修改源文件.
Parser Error Message: Could not create type 'jaxHandler'.
Source Error:
Line 1:
Line 2:
Line 3: using System;
Source File: /jaxHandler.ashx Line: 1
Version Information: Microsoft .NET Framework Version:2.0.50727.3074; ASP.NET Version:2.0.50727.3074
Run Code Online (Sandbox Code Playgroud)
此外,当我尝试点击我们网站上的.customextension上的超链接时,处理程序似乎没有拿起它.
所以当我点击超链接时,我得到:
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable. Detailed Error InformationModule IIS Web Core
Notification MapRequestHandler
Handler StaticFile
Error Code 0x80070002
Requested URL http://sss:80/somename.prod …Run Code Online (Sandbox Code Playgroud) 如果我有以下内容,实际上对于任何检查IsNullOrEmpty并且它变为空的字符串,应该抛出什么样的异常类型,并且它不是方法的参数?
我总是很难选择异常类型,因为它们中有很多这么多.这只是从web.config获取一个值并检查SandboxSoapApiUsername是否返回空.
if(string.IsNullOrEmpty(ConfigUtility.SandboxSoapApiUsername))
throw new WTF do I throw here??? ahhh
Run Code Online (Sandbox Code Playgroud)
它可能取决于使用/上下文对吗?好吧,我将使用返回的字符串来设置类私有字段.所以我需要在过程的早期检查它是否为空字符串而不是以后(而不是依赖其他代码来检查与私有字段相关的属性,我将设置ConfigUtility.SandboxSoapApiUsername).
由于我将每个ConfigUtility.MEthodName设置为此类的属性将在SOAP请求中使用,我认为可能UriFormatException在这里是合适的,即使这不是Uri?
我创建了somefile.js,其中somefile.js包含一些jQuery方法.所以例如它包含这个功能:
function showWindow(divID)
{
var dialogDiv = $(divID);
dialogDiv.dialog
(
{
bgiframe: true,
modal: true,
autoOpen: false,
show: 'blind'
}
)
dialogDiv.dialog("open");
}
Run Code Online (Sandbox Code Playgroud)
所以在我的.aspx页面(或者其他什么,它可能是.html),我有一个按钮:
<input type="button" onclick="showPopUp('testDiv')" value="Click Me!" />
Run Code Online (Sandbox Code Playgroud)
我的问题是,我们将在我们的应用程序中使用showPopUp.如果从onClick事件中调用它,那么我在哪里放置我的$(document).ready(function(),因为这段代码不在页面中,而是在.js文件中?
ExecutePayPalWorkflow();
也可以是这些名称中的任何一个:
DoPayPalWorkflow();
RunPayPalWorkflow();
PerformPayPalWorkflow();
Run Code Online (Sandbox Code Playgroud)
或者它真的不重要......因为这些动词中的任何一个都可以理解为"什么"通过其后的其他词语"PayPalWorkflow"显示你的意图
命名是我非常认真对待的事情,并且在编写代码时真正考虑了很多:
这个讨论适用于任何语言.我只是将这两个主要标签C#和Java放在这里,这对我来说足够好,可以得到一些可靠的答案或经验.
c# ×5
iis-7 ×2
jquery ×2
.net ×1
asp.net ×1
asp.net-mvc ×1
java ×1
javascript ×1
unit-testing ×1