Angularjs 量角器茉莉花的适应能正确地等待量角器。承诺。延迟()承诺吗?

Angularjs 量角器茉莉花的适应能正确地等待量角器。承诺。延迟()承诺吗?,angularjs,jasmine,protractor,e2e-testing,Angularjs,Jasmine,Protractor,E2e Testing,首先,向量角器团队和社区致敬,感谢他们为E2E测试等难以实现的问题提供了这样一个库 我有一个围绕ElementFinder的包装器JS类,因为我想添加额外的实用程序方法来进一步检查ElementFinder。当我返回此类类对象的实例时,我会返回它: function myFunc(){ var myElement = element(by.binding('plan.name')); var deferred = protractor.promise.defer(); var

首先,向量角器团队和社区致敬,感谢他们为E2E测试等难以实现的问题提供了这样一个库

我有一个围绕ElementFinder的包装器JS类,因为我想添加额外的实用程序方法来进一步检查ElementFinder。当我返回此类类对象的实例时,我会返回它:

function myFunc(){
   var myElement = element(by.binding('plan.name'));
   var deferred = protractor.promise.defer();
   var myWrapper = new myElementWrapper(myElement);
   deferred.fulfill(myWrapper);
   return deferred.promise;
}
稍后,我希望Jasmine 2.1中的值使用:

var val=myFunc();
expect(val).not.toBeNull();
根据Digrator queen的说法,
expect
应该等到承诺得到解决。它似乎不停地微风吹过。 查看我的代码生成的promise实例,我发现它的类型是:
goog.scope.promise.promise
。在量角器代码中,我注意到它使用了:
webdriver.promise.isPromise(res)
。 我还尝试使用
流包装调用。执行
但未成功,并且希望避免使用一系列链式
。然后执行
调用,因为这会降低测试的可读性

在继续测试流之前,这会不会正确地等待我解决上面的承诺

如果不是,那么创建promise对象的正确方法是什么,以便通过量角器的
expect
味道进行正确检查


我正在使用全新的、闪亮的量角器2.0版本运行。

您创建一个延迟,然后立即履行延迟并返回承诺(这只是直接返回
myWrapper
对象的一种复杂方式)

承诺是用来表示你还没有的价值。我在您的示例中没有看到任何不立即可用的内容,因此不清楚您为什么需要承诺

我想你想要这样的东西:

function myFunc() {
   var myElement = element(by.binding('plan.name'));
   return new myElementWrapper(myElement);
}

如果您想将
myElementWrapper
传递给
expect
,您的
myElementWrapper应该看起来像一个承诺(如果您扩展了现有的ElementFinder,这应该足够了)。

很抱歉,复制粘贴错误。请更正上面的代码。没有两个承诺。这个问题仍然存在。我删除了我答案的这一部分。我认为其余的仍然适用。