小编Pic*_*els的帖子

Moq:无法施放

我有以下嘲笑:

var MockHttpContext = new Mock<HttpContextBase>();
var MockPrincipal = new Mock<IPrincipal>();

MockHttpContext.SetupGet(h => h.User).Returns(MockPrincipal.Object);
Run Code Online (Sandbox Code Playgroud)

测试此行时发生错误:

var user = (CustomPrincipal)httpContext.User;
Run Code Online (Sandbox Code Playgroud)

这是错误:

Unable to cast object of type 'IPrincipalProxy5c6adb1b163840e192c47295b3c6d696' 
to type 'MyProject.Web.CustomPrincipal'.
Run Code Online (Sandbox Code Playgroud)

我的CustomPrincipal实现了IPrincipal接口.那么任何人都可以解释为什么我会得到这个错误以及我如何解决它?

c# moq

2
推荐指数
2
解决办法
3469
查看次数

集合中“ Shift +单击”项目以选择它们的算法

我试图模仿使用Javascript从Windows资源管理器中选择的文件。我注意到Windows资源管理器有两种类型的“选择”。一个是正​​常选择,突出显示该文件,另一个是虚线,表示该文件当前处于焦点状态。因此,我将“ selected”和“ focus”用作css类。

在这里,您可以找到我的代码在网页上工作的示例。

在我的代码中,它只是找到焦点项目和当前项目之间的行,然后选择它们。

select: function (e) {
    if (e.ctrlKey) {
        rs.removeFocus();
        $(this).toggleClass("selected");
        $(this).addClass("focus");
    }
    else if (e.shiftKey) {
        var focusItem = $("#Items p.focus");
        var currentItem = $(this);
        var betweenItems = rs.betweenItems(currentItem, focusItem);

        rs.unSelectAll();
        rs.removefocus();

        $(betweenItems).each(function () {
            this.addClass("selected");
        });

        focusItem.addClass("selected");
        $(this).addClass("focus");
        $(this).addClass("selected");
    }
    else {
        rs.unSelectAll();
        rs.removeFocus();
        $(this).addClass("selected");
        $(this).addClass("focus");
    }
}
Run Code Online (Sandbox Code Playgroud)

这可以“正常”运行,但与Windows资源管理器所选择的功能并不完全一样。在Windows资源管理器中,它们并不总是选择上一个焦点项目与当前焦点项目之间的行。如果选择中没有“空白”,他们会将这些项目添加到选择中。但是,如果存在差距,它将从关注的项目开始。

我不确定该怎么做。看来他们在Windows中使用的算法对我来说有点复杂。因此,如果有人可以帮助我或将我推向正确的方向,我将不胜感激。

javascript jquery

2
推荐指数
1
解决办法
1258
查看次数

Ironpython:IEnumerator

我有一个方法返回某种类型的IEnumerable.现在我想知道如何用Ironpython迭代IEnumerable?

谢谢

.net c# ironpython

2
推荐指数
1
解决办法
1103
查看次数

单元测试:测试父对象方法是否有意义?

假设我使用的是一个名为Animal的类框架.

class Animal(object):
    def speak(self):
        logging.info(self.sound)
Run Code Online (Sandbox Code Playgroud)

我必须子类化这个对象才能使用它,它可能看起来像这样:

class Dog(Animal):
    def __init__(self):
        self.sound = 'Woof Woof'
Run Code Online (Sandbox Code Playgroud)

我看到它的方式我可以做两件事.第一个是这样的:

dog = Dog()
assert dog.sound == 'Woof Woof'
Run Code Online (Sandbox Code Playgroud)

第二个选项是模拟logging.info并检查它是否被调用.我对他们两人都有不同的看法.

第一个感觉就像我只是测试我的配置而第二个感觉就像我实际上没有测试我想要的对象.

我正在使用这个简单的例子,因为那些不使用Django的人可能会给我一些指示.我遇到的真正问题涉及Django通用视图.

例如,我可以拥有此模板视图:

class HomeView(TemplateView):
    template_name = 'home.html'
Run Code Online (Sandbox Code Playgroud)

我是否只测试template_name是否具有正确的值,还是使用测试客户端进行更高级别的测试来测试完整视图?

python django tdd unit-testing

2
推荐指数
1
解决办法
331
查看次数

Jasmine:在单元测试后恢复原型方法

为了测试我的代码的某一部分,我需要模拟一个原型方法来确保它被调用.代码看起来像这样.

SomeObject.prototype.foo = jasmine.createSpy()
var so = SomeObject()
so.bar()
expect(SomeObject.prototype.foo).toHaveBeenCalled()
Run Code Online (Sandbox Code Playgroud)

这可以工作,但它改变了我不想要的SomeObject的状态.所以我想知道有没有办法在我完成之后恢复prototype.foo的状态?我在考虑制作SomeObject的副本.我看了一下jQuery.extend,但我不确定我是否可以使用它来复制构造函数.

javascript mocking jasmine

2
推荐指数
1
解决办法
1778
查看次数

Django:具有相同名称的嵌套内容块

有没有办法让内容块具有相同的名称?

base.html文件:

这是具有主要布局的模板.

<html>

  ...

  {% block content %}

  {% endblock %}

  ...

</html>
Run Code Online (Sandbox Code Playgroud)

base_side_left.html:

这是左侧主要布局+侧边栏的模板.

{% extends 'base.html' %}

{% block content %}

  <div class='sidebar'>
  </div>

  {% block content %}

    //This doesn't work because you can't have blocks with the same name//

  {% endblock %}

{% endblock
Run Code Online (Sandbox Code Playgroud)

我有几个原因要问这个:

  1. 无需更改内容块的名称即可轻松更改页面的父级.
  2. 我不需要为我的积木提供名字.像内容内容,侧边栏内容等

我有两个解决方案,我不喜欢,因为他们不干:

  1. 使侧边栏成为局部,并将其包含在您需要的模板中.
  2. 将所有内容添加到基本模板并覆盖您不需要的块.

如果使用Django模板无法实现这一点,我可以使用其他模板引擎执行此类操作吗?

小更新:

模板图

所以我想要做的是能够在模板树中移动模板而不会有太多麻烦.虽然没有为我的内容块提供智能名称,但这是不可能的,但我想我还是添加了这个漂亮的图表.

django templates

2
推荐指数
1
解决办法
3290
查看次数

Asp.net Security:IIdentity.IsAuthenticated默认实现

我正在编写自己的自定义Identity类,它实现了IIdentity.我不需要更改默认方法IsAuthenticated但现在我想知道默认的IIdentity如何确定它应该返回true还是false?

我想在我正在使用的FormsAuthenticationTicket中找到答案,但不确定这是否正确.

提前致谢,

Pickels

asp.net security asp.net-membership

1
推荐指数
1
解决办法
3526
查看次数

Python:使用参数传递函数到内置函数?

像这个问题我想传递一个带参数的函数.但我想将它传递给内置函数.

例:

files = [ 'hey.txt', 'hello.txt', 'goodbye.jpg', 'howdy.gif' ]

def filterex(path, ex):
  pat = r'.+\.(' + ex + ')$'
  match = re.search(pat, path)         
  return match and match.group(1) == ex) 
Run Code Online (Sandbox Code Playgroud)

我可以使用带有for循环和if语句的代码,但它更短,使用filter(func,seq)可能更具可读性.但是,如果我理解正确,您使用过滤器的函数只接受一个参数,该参数是序列中的项目.

所以我想知道是否可以传递更多的论据?

python refactoring

1
推荐指数
1
解决办法
322
查看次数

Postgres:使用命令行导航的提示

我对Postgres非常陌生,现在遇到的主要问题是我没有服务器概览。如果您使用类似pgadmin3的工具,则很容易浏览并获得数据库结构的一般概念。

因此,寻找一些可以帮助我发现数据库服务器的常规命令。

postgresql

1
推荐指数
1
解决办法
4237
查看次数

从数组实例中隐藏额外的方法

我创建了一个包含所有变异方法事件的数组.因此,如果你做a.push a.on('push')被解雇了.我通过向数组实例添加新推送来实现此目的.现在的问题是,如果你在console.log中或在测试中比较数组,新方法也会显示出来.有没有办法隐藏这些新方法?

代码:

var oar = function (base) {

    var arr = base || [];
    var handlers = {};

    arr.on = function (event, callback) {
        if (typeof handlers[event] === 'undefined') {
            handlers[event] = [];
        }

        handlers[event].push(callback);
    };

    var proxy = function (method) {

        var args = Array.prototype.slice.call(arguments, 1);
        var result = Array.prototype[method].apply(arr, args);

        process.nextTick(function () {
            if (typeof handlers[method] !== 'undefined') {
                handlers[method].forEach(function (handler) {
                    handler(arr);
                });
            }
        });

        return result;

    };

    [ 'pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift' …
Run Code Online (Sandbox Code Playgroud)

javascript

1
推荐指数
1
解决办法
50
查看次数