草庐IT

javascript - Protractor :如何定位给定元素的 sibling ?

LINK...我想为带有image类的img标签获取一个Protractor元素。我已经知道链接文本“LINK”。换句话说,“我如何定位给定元素的同级元素?”。代码的第一行可能如下所示:browser.findElement(by.linkText('LINK'))有什么想法吗?谢谢和干杯 最佳答案 感谢您的启发。这是我的解决方案,不是我希望的解决方案,但它有效:element(by.css('???')).element(by.xpath('..')).element(by.css('???')).click();允许返回父级的链

javascript - 为什么 Jasmine 被称为 "BDD"测试框架,即使不支持 "Given/When/Then"?

在介绍Jasmine,它说:Jasmineisabehavior-drivendevelopmentframeworkfortestingJavaScriptcode.我阅读了BDD的几篇文章,似乎我们应该使用“Given/When/Then”来定义“Scenario”,这就是“cucumber”所做的。但是在Jasmine中,我看不到任何这样的方法。即使Jasmine没有这样的概念,我们还能称其为“BDD”测试框架吗? 最佳答案 Jasmine不会阻止您使用given-when-then,下面的示例显示了在使用Jasmine时可以

javascript - 如何将 $rootScope 注入(inject) AngularJS 单元测试?

假设我有一个依赖于$rootScope中的值的服务,如以下(普通)服务:angular.module('myServices',[]).factory('rootValGetterService',function($rootScope){return{getVal:function(){return$rootScope.specialValue;}};});如果我想通过在$rootScope中放置一个值来对此进行单元测试,最好的方法是什么? 最佳答案 ...var$rootScope;beforeEach(inject(funct

javascript - 试图理解 Jasmine 的 toHaveBeenCalled() 匹配器

我是jasmine的新手,这是我的src文件,我在其中创建了Auth类functionAuth(){}Auth.prototype.isEmpty=function(str){return(!str||0===str.length);}Auth.prototype.Login=function(username,password){if(this.isEmpty(username)||this.isEmpty(password)){return"UsernameorPasswordcann'tbeblank";}else{return"LoggedIn!";}}现在我想测试jasmin

javascript - expect() 没有实际期望

问题:最近,在审查我们现有的测试代码库时,我注意到在没有“匹配”部分的情况下使用expect()时出现了一种危险的打字错误:expect(page.filters.fromDateLabel.getText(),"After");我很确定toEqual()应该在这里使用:expect(page.filters.fromDateLabel.getText()).toEqual("After");这个问题是jasmine在这种情况下不会让预期失败(好吧,显然是因为实际上没有任何预期)。这让我们遇到了一个更严重的问题——在测试用例中实际上没有测试任何东西——它在没有期望的情况下通过了。我们对

javascript - 有没有办法用 Jasmine 验证 spy 执行的顺序?

我有两个对象已被Jasmine设置为spy:spyOn(obj,'spy1');spyOn(obj,'spy2');我需要验证对spy1的调用先于对spy2的调用。我可以检查它们是否都被调用:expect(obj.spy1).toHaveBeenCalled();expect(obj.spy2).toHaveBeenCalled();但是即使首先调用了obj.spy2()也会通过。有没有一种简单的方法可以验证一个在另一个之前被调用? 最佳答案 看起来Jasmine的人看到了这个帖子或其他人喜欢它,因为thisfunctionalit

javascript - 测试使用 setInterval 或 setTimeout 的 Angular2 组件

我有一个相当典型、简单的ng2组件,它调用一个服务来获取一些数据(轮播项目)。它还使用setInterval每隔n秒自动切换UI中的轮播幻灯片。它工作得很好,但在运行Jasmine测试时我收到错误:“无法在异步测试区内使用setInterval”。我尝试在this.zone.runOutsideAngular(()=>{...})中包装setInterval调用,但错误仍然存​​在。我原以为将测试更改为在fakeAsync区域中运行可以解决问题,但随后我收到一条错误消息,指出不允许从fakeAsync测试区域中进行XHR调用(这确实有意义)。如何同时使用服务发出的XHR调用和时间间隔,

javascript - 如何测试我的方法是否在 angular2 中抛出可观察到的错误?

我正在为我的angular2组件创建单元测试用例。目前测试用例运行正常。但我在异步调用方面遇到了问题。例如。我有以下创建新用户的方法,如果用户已经存在,则会抛出错误:onSubmit():Observable{this._userService.saveUser(this.user).subscribe((response)=>{this._directoryService.getDirectoryById(this.selectedDirectory._id).subscribe((directory)=>{this.users=directory[0].users;},(error

javascript - 自定义 Jasmine 匹配器和 Protractor

我们添加了一个toHaveClass自定义jasmine匹配器,为了让它工作,我们必须将它添加到beforeEach()(在thistopic的帮助下)。并且,为了遵循DRY原则并避免在需要toHaveClass的规范中的每个beforeEach()中重复匹配器定义,我们添加了一个beforeEach()block直接进入onPrepare():onPrepare:function(){varjasmineReporters=require("jasmine-reporters");require("jasmine-expect");//...//custommatchersbefor

javascript - 在 javascript 认为文档为 "ready"之前,如何让我的 jasmine 测试装置加载?

我相当确定问题是设置为在$(document).ready上运行的jquery绑定(bind)没有可用的固定html。因此,当我发生旨在通过jquery函数更改DOM的事件时,什么也没有发生,我的测试失败了。我看到了这个问题的“解决方案”here,但是对我有用的解决方案需要更改我的工作jquery函数以绑定(bind).live方法而不是.click方法。我有两个问题。首先,我不想更改我的工作代码以使测试正确通过。测试框架应该测试代码是否会在应用程序中工作,DOM加载和javascript绑定(bind)以正确的顺序发生。我对解决方案的第二个问题是.on和.delegate由于某种原因