Sye*_*eed 9 jasmine angularjs karma-runner
这是我的功能
$scope.buildForm = function (majorObjectId, name) {
$window.open("/FormBuilder/Index#/" + $scope.currentAppId + "/form/" + majorObjectId + "/" + name);
};
Run Code Online (Sandbox Code Playgroud)
这是我的茉莉花测试规范
it('should open new window for buildForm and with expected id', function () {
scope.majorObjectId = mockObjectId;
scope.currentAppId = mockApplicationId;
var name = "DepartmentMajor";
scope.buildForm(mockObjectId, name);
scope.$digest();
expect(window.open).toHaveBeenCalled();
spyOn(window, 'open');
spyOn(window, 'open').and.returnValue("/FormBuilder/Index#/" + scope.currentAppId + "/form/" + scope.majorObjectId + "/" + name);
});
Run Code Online (Sandbox Code Playgroud)
但当我尝试运行它时,它打开一个新选项卡,我不希望这发生,我只是想检查给定的returnValues是否存在不!
Bha*_*han 18
首先,你的期望(window.open).toHaveBeenCalled()是错误的.在监视事件之前你不能指望.现在提出你的问题,茉莉花有不同的方法来监视依赖关系,比如
请查看Jamine doc以获取完整列表
根据您的要求提供下面的示例测试用例
$scope.buildForm = function() {
$window.open( "http://www.google.com" );
};
Run Code Online (Sandbox Code Playgroud)
将会
it( 'should test window open event', inject( function( $window ) {
spyOn( $window, 'open' ).and.callFake( function() {
return true;
} );
scope.buildForm();
expect( $window.open ).toHaveBeenCalled();
expect( $window.open ).toHaveBeenCalledWith( "http://www.google.com" );
} ) );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12017 次 |
| 最近记录: |