小编dnc*_*253的帖子

如何测试指令的link函数中的行为

在我的一些指令中,我正在向作用域添加函数来处理特定于指令的逻辑.例如:

link: function(scope, element, attrs) {
         scope.doStuff = function() {
            //do a bunch of stuff I want to test
         }        
      }
Run Code Online (Sandbox Code Playgroud)

我该如何测试该功能?我搜索了如何测试指令,但我发现的更多是关于测试元素的更改.我可以在每次测试之前编译我的指令,但这样每次都会消灭我的范围.我想测试该函数作为我的范围更改中的属性.

有没有办法获取从指令定义返回的对象?然后我可以直接调用链接函数并测试作用域上定义的每个函数的行为.有没有更好的方法来做这一切?

我正在使用Jasmine运行我的测试,我想在describe函数中设置我的示波器,所以我可以it为相同的示波器数据提供多个函数.

javascript jasmine angularjs

47
推荐指数
1
解决办法
3万
查看次数

尝试使用Spring Data JPA创建自定义存储库时,找不到类型错误的属性

我有一个Media实体,它有一些用户上传文件的基本字段.为了保存上传文件的字节,我想创建一个包含该功能的自定义存储库.按照Spring文档中的步骤,我创建了一个如下所示的界面:

public interface MediaBytesRepository
{
    public byte[] getBytes(Media media) throws IOException;
    public void saveBytes(Media media, byte[] bytes) throws IOException;
    public void appendBytes(Media media, byte[] bytes) throws IOException;
    public void deleteBytes(Media media) throws IOException;
    public boolean bytesExist(Media media) throws IOException;
}
Run Code Online (Sandbox Code Playgroud)

然后我提供了一个名为的接口的实现 MediaBytesRepositoryImpl

有了这个,我创建了以下界面:

public interface MediaRepository extends JpaRepository<Media, Long>, MediaBytesRepository
{
}
Run Code Online (Sandbox Code Playgroud)

现在,当我启动服务器时,我得到以下堆栈跟踪:

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mediaRepository': FactoryBean threw exception on object creation; …
Run Code Online (Sandbox Code Playgroud)

java spring repository spring-data-jpa

39
推荐指数
2
解决办法
4万
查看次数

Java map,key = class,value =该类的实例

我不确定我想做什么是可能的,但如果是的话,我想知道如何做.基本上,我想创建一个Map,其中键是一个class(java.lang.Class),该条目的值是该类的一个实例.目前我有

private Map<Class<?>, Object> myMap = new HashMap<Class<?>, Object>();
Run Code Online (Sandbox Code Playgroud)

但是,这意味着任何Object都可以放在Map中.如果有可能,我想制作它,因此只能将键中的类的实例放置在地图中.有没有办法使用?在Class上进行参数化以确保这一点?

此外,我发现在做这样的事情时可能会有内存泄漏.我不确定我是否完全理解这是怎么发生的.我只会将单个对象粘贴到地图中,那么是否仍会出现内存泄漏问题?如果是这样,我该如何预防呢?

java parameterized

21
推荐指数
3
解决办法
2万
查看次数

有没有办法用AngularJS写注释,以便在查看源时它们不可见

在编写JSP时,我总是使用<%-- --%>而不是<!-- -->编写任何注释,因为它不会输出到HTML.我已经开始使用AngularJS,我想知道是否有任何类似的评论构造我可以使用.不一定要在HTML源代码中看不到注释,但我更倾向于不在那里.

由于我对AngularJS的了解有限,我不确定它们是如何阻止它进入源代码的,但我只是想问一下如果有办法.也许在AngularJS中也有最好的评论做法?任何输入将不胜感激.

javascript comments angularjs

21
推荐指数
2
解决办法
3万
查看次数

CSS高度:100%vs height:继承

我已经看到了问及和之间区别height: 100%;height: auto;的问题,但是height: 100%;和之间的区别是height: inherit;什么?

我基本上希望这个元素的高度填充/匹配它的容器.是否有理由使用100%,inherit反之亦然?

css

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

Spring Data JPA删除本机查询抛出异常

我有一个User实体和一个Role实体.关系定义如下:

@OneToMany
@JoinTable(name="USER_ROLES", inverseJoinColumns=@JoinColumn(name="ROLE_ID"))
private List<Role> roles = null; 
Run Code Online (Sandbox Code Playgroud)

现在,当我删除一个角色时,我需要从具有该角色的所有用户中删除该角色.通常,您可以通过查找具有此角色的所有用户,从列表中删除角色以及保存用户来执行此类操作.但是,当可能有超过一百万用户时,我不想在应用程序中循环这么多实体.所以,我想使用本机查询从USER_ROLES连接表中删除行.我尝试将其添加到我的存储库:

@Query(value="DELETE FROM user_roles WHERE role_id = ?1", nativeQuery=true)
public void deleteRoleFromUsersWithRole(Long roleId);
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,我在日志中看到以下内容:

[EL Fine]: sql: 2013-11-02 14:27:14.418--ClientSession(707349235)--Connection(2096606500)--Thread(Thread[http-bio-8080-exec-4,5,main])--DELETE FROM user_roles WHERE role_id = ?
   bind => [1000110139999999953]
[EL Fine]: sql: 2013-11-02 14:27:14.478--ClientSession(707349235)--Thread(Thread[http-bio-8080-exec-4,5,main])--SELECT 1
[EL Warning]: 2013-11-02 14:27:14.482--UnitOfWork(1795045370)--Thread(Thread[http-bio-8080-exec-4,5,main])--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: No results were returned by the query.
Error Code: 0
Call: DELETE FROM user_roles WHERE role_id = …
Run Code Online (Sandbox Code Playgroud)

java jpa nativequery spring-data-jpa

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

AngularJS - 使用$ http服务的测试服务方法

我的服务功能看起来像这样:

addStatement: function(user, action, object) {
            var statement = {
                    user: user,
                    action: action,
                    object: object
            };
            $http({
                method: 'POST', 
                url: '/foo/bar', 
                data: statement, 
                headers: {Authorization: 'Basic YWxhZGRpbjpvcGVuIHNlc2FtZQ=='}
            }).success(function(data) {
                alert("success: " + data);
            });
        }
Run Code Online (Sandbox Code Playgroud)

我想为这个方法编写单元测试,但我不确定如何使它工作.基本上,我想测试发送的数据是否已从函数参数中正确构造,并且发送了正确的Authorization标头.

我一直在阅读如何使用$ httpBackend,但是那里的例子是测试一个控制器,只是在发出请求并返回时在$ scope上发生了变化.有没有办法实现我想要的测试?或者我说错了什么?

unit-testing angularjs

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

有没有办法为隔离的范围别名提供默认值?

假设我有以下作为我的指令定义的一部分:

scope: {
    prop1: '@'
}
Run Code Online (Sandbox Code Playgroud)

如果指令没有prop1属性,prop1有没有办法获取默认值?当然,我可以检查它是否被自己定义并设置它,但是当你期望时,属性并不总是被设置.我只是想知道我在文档中是否遗漏了任何语法,或者是否有一个很好的标准方法来执行此操作.谢谢.

javascript angularjs

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

AngularJS - 为什么不替换:true使用templateUrl属性?

我有一个非常简单的指令,我想从单独的HTML文件加载模板.我希望HTML替换指令,因此我将replace: true属性添加到指令中.但是,当我这样做时,模板根本不包括在内.

我创建了一个jsFiddle,你可以看到这个.如果您使用Firebug或其他东西来检查DOM,您可以看到当它仅使用template属性时它会替换元素.如果你取消了,replace: true你可以看到templateUrl附加到foo元素的HTML .但是,只要我添加了replace: truetemplateUrl所有我看到的是<foo></foo>在DOM.

有什么理由你不能一起使用这两个属性?我远非javascript的专家,所以任何关于这里发生的事情的信息将不胜感激.

javascript angularjs

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

JPA - @OneToMany作为地图

这似乎是一个常见的案例,但作为JPA新手,我很难搞清楚这一点.我正在使用EclipseLink和PostgreSQL,但这应该只涉及JPA规范.

我有一个表PRIMARY有一个ID,然后是一堆其他列.还有另一个表SECONDARY也有一个外键进入PRIMARY表中也称为ID.此SECONDARY表具有该组合键ID和表示语言环境的varchar.

因此,在Primary实体中我想要一个类型字段,Map<String, Secondary>其中键是SECONDARY表中的语言环境字符串,条目是Secondary实体.我的Secondary班级看起来像这样:

@Entity
public class Secondary
{
     @Id
     private Long id;
     @Id
     private String locale;
     private String str1;
     private String str2;
     .....
}
Run Code Online (Sandbox Code Playgroud)

我想我想使用@MapKeyJoinColumn注释,但我似乎无法使其他注释工作.我试过这个:

@OneToMany
@JoinColumn(name="ID")
@MapKeyJoinColumn(name="LOCALE")
private Map<String, Secondary> secondaryByLocale;
Run Code Online (Sandbox Code Playgroud)

这导致它尝试选择一个名为secondaryByLocale_key的列,该列不存在.

然后我尝试了这个:

@OneToMany
@JoinTable(name="SECONDARY", 
        joinColumns={@JoinColumn(name="ID")},
        inverseJoinColumns=@JoinColumn(name="ID"))
@MapKeyJoinColumn(name="LOCALE")
private Map<String, Secondary> secondaryByLocale;
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

Exception Description: The @JoinColumns on the annotated element [field secondaryByLocale] from …
Run Code Online (Sandbox Code Playgroud)

java jpa map one-to-many

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