我有几个ActionMethods来查询Controller.User这样的角色
bool isAdmin = User.IsInRole("admin");
Run Code Online (Sandbox Code Playgroud)
在这种情况下方便地行事.
我开始用这样的代码对这些方法进行测试
[TestMethod]
public void HomeController_Index_Should_Return_Non_Null_ViewPage()
{
HomeController controller = new HomePostController();
ActionResult index = controller.Index();
Assert.IsNotNull(index);
}
Run Code Online (Sandbox Code Playgroud)
并且测试失败,因为未设置Controller.User.任何的想法?
我的控制器中有一个这样的动作方法
public ActionResult Index()
{
using (NorthwindDataContext db = new NorthwindDatacontext())
{
var results = db.GetRecordSets(arg1, ....).ToList();
// use results as list
}
return View();
}
Run Code Online (Sandbox Code Playgroud)
我想开始为它做测试(是的,在它构建之后,而不是之前......但代码是在我开始使用TDD之前编写的......)
我发现在控制器中添加这样的属性
public delegate NorthwindDatacontext ContextBuilderDelegate();
public ContextBuilderDelegate ContextBuilder { get; set; }
Run Code Online (Sandbox Code Playgroud)
我可以在构造函数中添加这样的东西......
ContextBuilder = () => new NorthwindDatacontext();
Run Code Online (Sandbox Code Playgroud)
然后我可以测试ActionMethod设置ContextBuilder属性与模拟NorthwindDatacontext
var controller = new MyController();
var mockDataContext = new Mock<NorthwindDatacontext>();
controller.ContextBuilder = () => mockDataContext.Object;
Run Code Online (Sandbox Code Playgroud)
但是......我发现无法使用它,因为NorthwindDatacontext的所有方法都使用ISingleResult作为returnType,我无法找到使用该接口创建对象的方法.我试过这个
var theResult = new List<GetRecordSetsResult>();
// fill the data structure here with the provided result...
mockDataContext.Setup(c => …Run Code Online (Sandbox Code Playgroud) 我开始了一个新的小WPF应用程序,它有一个类似于放在图片上的条目形式.该图片具有应该输入的数据的占位符以及放置TextBox的位置,因此用户实际上将数据输入到表格中,就像她手工或打字机一样.我想添加一个效果,当用户离开字段时,partiali隐藏文本框,因此在其中一个字段中放置了一些事件处理程序,添加了以下代码:
<TextBox Height="23" VerticalAlignment="Top" Width="237"
HorizontalAlignment="Left" Margin="641,25,0,0"
Name="txtAmount" LostFocus="txtAmount_LostFocus" />
private void txtAmount_LostFocus(object sender, RoutedEventArgs e)
{
Opacity = .5;
}
Run Code Online (Sandbox Code Playgroud)
这有效,所以我继续添加代码在所有textBoxes中设置相同的行为,所以我用下面的代码更改了上面的代码:
<Window.Resources>
<Storyboard x:Key="FadeOut">
<DoubleAnimation From="1.0" To="0.5"
Duration="0:0:0.2"
Storyboard.TargetProperty="Opacity">
</DoubleAnimation>
</Storyboard>
<Storyboard x:Key="FadeIn">
<DoubleAnimation From="0.5" To="1.0"
Duration="0:0:0.2"
Storyboard.TargetProperty="Opacity"/>
</Storyboard>
<Style x:Key="InTheShadow" >
<Style.Setters>
<Setter Property="TextBox.Opacity" Value="0.5" />
</Style.Setters>
</Style.Setters>
<Style.Triggers>
<EventTrigger RoutedEvent="TextBox.GotFocus">
<BeginStoryboard Storyboard="{StaticResource FadeIn}"/>
</EventTrigger>
<EventTrigger RoutedEvent="TextBox.LostFocus">
<BeginStoryboard Storyboard="{StaticResource FadeOut}"/>
</EventTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)
第一个代码,也处理了GotFocus事件,但它的代码几乎相同,所以第二个代码实现了,并且放在所有设置样式的textBox上.
现在,这也有效,但我想为MouseEnter/MouseLeave添加相同的效果
<EventTrigger RoutedEvent="TextBox.MouseEnter">
<BeginStoryboard Storyboard="{StaticResource FadeIn}"/>
</EventTrigger>
<EventTrigger RoutedEvent="TextBox.MouseLeave">
<BeginStoryboard Storyboard="{StaticResource FadeOut}"/>
</EventTrigger> …Run Code Online (Sandbox Code Playgroud) 我正在使用PHP 4.3.11,当我执行一个标题总是响应这样的错误
警告:无法修改标题信息 - 已在第2行的d:\ folder\file.php中发送的标题(输出从d:\ folder\file.php:1开始)
警告:无法修改标题信息 - 已在第3行的d:\ folder\file.php中发送的标题(输出从d:\ folder\file.php:1开始) 当前PHP版本:4.3.11
我用来生成此错误的代码是
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
echo 'Current PHP version: ' . phpversion();
// prints e.g. '2.0' or nothing if the extension isn't enabled
echo phpversion('tidy');
?>
Run Code Online (Sandbox Code Playgroud)
它在php标签之前或之后没有空格或换行符,并且5.x版本中的相同代码只返回预期的php版本.
任何线索?
提前致谢
编辑: 解决了!:我用西欧编码打开了文件并删除了BOM并且工作正常.感谢你的帮助!