我是ASP.NET MVC堆栈的新手,我想知道简单的Page对象和Request ServerVariables对象发生了什么?
基本上,我想提取客户端PC的IP地址,但我无法理解当前的MVC结构如何改变了所有这些.
据我所知,大多数变量对象已被HttpRequest变体所取代.
有人关心分享一些资源吗?ASP.NET MVC世界中有很多东西要学习.:)
例如,我有一个带有当前函数的静态类.如何使用ASP.NET MVC获得相同的结果?
public static int getCountry(Page page)
{
return getCountryFromIP(getIPAddress(page));
}
public static string getIPAddress(Page page)
{
string szRemoteAddr = page.Request.ServerVariables["REMOTE_ADDR"];
string szXForwardedFor = page.Request.ServerVariables["X_FORWARDED_FOR"];
string szIP = "";
if (szXForwardedFor == null)
{
szIP = szRemoteAddr;
}
else
{
szIP = szXForwardedFor;
if (szIP.IndexOf(",") > 0)
{
string [] arIPs = szIP.Split(',');
foreach (string item in arIPs)
{
if (!isPrivateIP(item))
{
return item;
}
}
}
}
return szIP;
} …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个perl web应用程序LAMP风格,最近偶然发现了一些以前的开发人员留下的死亡迷宫代码.他留下了许多神奇的数字和奇怪的逻辑,每次我必须通过它时,它让我头疼.
我现在正在学习单元测试,所以我想找到一些有用的工具来重构代码并编写单元测试,以确保我不会意外破坏任何东西.
对LAMP perl的任何好的重构工具的任何建议?最好免费:)
谢谢.
是的,我知道我落后于时代,但我在这里得到的是一个古老的VB6编辑器应用程序,我相信没有人会很快升级到.NET.它使用了几个第三方DLL工具,因为它仍然使用旧的RichEdit控件,我基本上可以仅用这个工具来提升我自己的Bug场.
足够了,我正在试图看看我是否可以使用TDD,所以我可以开始为我需要修复的每个行为/功能编写单元测试,所以迟早我可以为这个工具提供一个完整的回归测试套件.即使在未来,如果我们升级到.NET,我认为我编写的大多数测试应该有助于验证正确的行为,并且应该可以升级到.NET版本,我想.
一些基本的谷歌搜索发送给我这个工具调用simplyVBunit,但我找不到足够的指南等让我开始,是的我不是那么精通VB6 :(
谢谢 :)
我已经尝试搞乱了vbunit,但我发现没有简单的方法将它添加到现有的应用程序或至少不知道如何.因此我发现这也与vb-lite-unit以及这个comunit一起玩.还有一些说法我们可以将NUnit与vb6一起使用,但是资源更少.
我最近有机会为我的项目编写一个简单的tcp-client,由于我对tcp/ip的巨大无知,我很难让它正常工作.
我发现有时候当tcp服务器关闭时连接被拒绝或者有时在调用receive时我可能会遇到异常时,我会遇到奇怪的连接问题.
由于tcp-server是一个黑盒子,我们无法访问它,我想知道在这种情况下,为此编写单元测试的最佳方法是什么?
我想要么我应该写一个tcp-server并让它返回某些输入,就像我期望从真实服务器那样,或者只是模拟与返回理想情况数据相关的函数.
我只是不喜欢这样的事实:有时我可能会遇到奇怪的连接/接收问题而且我想知道如何正确编写单元测试,我可以在将来重复使用/扩展以确保之前工作的所有内容仍然有效以防我的代码或代码发生变化.
谢谢
当我开始学习模拟和现在不同的框架时,我只是学习为我的asp.net mvc进行单元测试.
在检查了SO之后,我发现MOQ似乎是最容易接受的.截至目前,我一直试图模拟Request.ServerVariables,因为在阅读这篇文章后,我已经了解到将它们抽象为属性更好.
因此:
/// <summary>
/// Return the server port
/// </summary>
protected string ServerPort
{
get
{
return Request.ServerVariables.Get("SERVER_PORT");
}
}
Run Code Online (Sandbox Code Playgroud)
但我很难学会如何正确地模仿这个.我有一个家庭控制器ActionResult函数,它抓取用户服务器信息并继续创建一个表单来获取用户的信息.
我试图使用hanselman的mvcmockhelpers类,但我不知道如何使用它.
这是我到目前为止...
[Test]
public void Create_Redirects_To_ProductAdded_On_Success()
{
FakeViewEngine engine = new FakeViewEngine();
HomeController controller = new HomeController();
controller.ViewEngine = engine;
MvcMockHelpers.SetFakeControllerContext(controller);
controller.Create();
var results = controller.Create();
var typedResults = results as RedirectToRouteResult;
Assert.AreEqual("", typedResults.RouteValues["action"], "Wrong action");
Assert.AreEqual("", typedResults.RouteValues["controller"], "Wrong controller");
}
Run Code Online (Sandbox Code Playgroud)
我知道TDD上有很多东西,我也试图接受这种做法.但我想知道TDD你的错误修复是一个好主意吗?
我正在思考找到这个bug并缩小它的范围.编写单元测试以确保它现在可以传递它先前引起的任何问题.为其他易碎条件写更多单元测试.最后编写单元测试来测试集成测试,因为我们之前没有任何单元测试,因此每当我修复一个bug时,我总是担心我可能会意外破坏某些东西.
谢谢.
目前我正在使用相当多的Unix + Mysql + Perl + Apache和一些javascript来使它更像ajax.我一直在寻找web 2.0和stackoverflow的网站,真的很喜欢简单的设计和来自页面和动作等的流畅的流程.
我正在努力决定学习催化剂,泥瓦匠等是否能够为我提供构建功能强大且流畅的Web 2.0网站的能力,而不需要花费更少的精力和更简单,更清晰的代码来维护.
截至目前,我并不喜欢我建立的网站,因为它非常陈旧和缓慢.但我从这里读到,如果我想用它建立一个职业,那么LAMP会是一个更好的选择吗?
只是想知道这三个标准,我最好的一步是什么?
谢谢.〜史蒂夫
我是Perl的LAMP Web开发人员,在我目前的地方,我们使用Perl来检索数据,将它们放入XML然后将XML传递给XSL文件.这一切都是由全能的AxKit神奇地处理的.因此,你可以想象我的XSL充满了XSLT线,即if test,@value等等.
我想知道是否有任何工具,IDE等可用于打开XSL文件并检查HTML预览而无需修改当前XSL中的任何内容?
只要完成工作,我就会接受建议.谢谢.
我还在学习TDD的黑暗艺术,最近我一直在努力学习如何在VB6中进行TDD以及我基本上缩小列表的范围是免费的simplevbunit和最昂贵的vbunit3.
我的应用程序是一个富文本编辑器,有很多第三方dll,我在谷歌中搜索高低,以找到如何对这个exe文件进行单元测试.
所以我的问题是如何对exe文件进行单元测试?特别是在VB6的上下文中,如果你有任何关于vbunit3或simplyvbunit的好例子,你只是一个救星,因为我现在正在投入材料,我仍然不能写一个单元测试:(
实际上,应用程序包含许多表单,模块和类模块,当我编译它时,它当然变得很好整齐打包.EXE文件.而为了使事情变得更加复杂,有许多全球变量飞来飞去.
但我的主要目的是对所有或最易破解的部分代码进行单元测试.我想确保我可以保持测试和代码分开.所以我认为最好的方法是,通过添加引用等以某种方式直接测试exe.
有一个更好的方法吗?
最近我开始玩OO Perl并且我正在为我正在开发的新项目创建相当多的新对象.因为我对OO Perl的任何最佳实践都不陌生,我们正急于完成它:P
我在我的每个函数中都加入了很多这样的代码:
sub funcx{
use ObjectX; # i don't declare this on top of the pm file
# but inside the function itself
my $obj = new ObjectX;
}
Run Code Online (Sandbox Code Playgroud)
我想知道这是否会导致任何负面影响,而不是在use Object任何功能范围之外的Perl模块之上.
我这样做是为了让我觉得它更干净,以防我需要改变功能.
我注意到的另一件事是,当我尝试在测试我的对象的unix服务器本身上运行一个test.pl脚本时,它很慢.但是当相同的代码通过连接到apache服务器的CGI运行时,网页的加载速度不会很慢.
unit-testing ×4
perl ×3
tdd ×3
asp.net-mvc ×2
vb6 ×2
.net ×1
c# ×1
catalyst ×1
debugging ×1
html ×1
lamp ×1
moq ×1
oop ×1
preview ×1
refactoring ×1
richedit ×1
simplyvbunit ×1
tcp-ip ×1
xslt ×1