2015-04-06 55 views
0

在.m文件我有一個像如何讓test.m文件中的UIButton的狀態值

-(void) textdata 
{ 
    long i = search.text.length; 
    if (i > 0) { 
     searchButton.enabled = YES;   
    } 
    else 
    { 
     searchButton.enabled = NO; 
    } 
    [self buttonstate]; 
} 

-(int) buttonstate 
{ 
    if ([searchButton isEnabled]) { 
     j = 1; 
    } 
    else 
     j = 0; 

    NSLog(@" j value is %d",j); 
    return j; 
} 

- (void) textFieldDidChange 
{ 
    [self textdata]; 
    NSLog(@"test data is %@",search.text); 
} 

方法和在tests.m文件我有測試樣

-(void) testwithoutData 
{ 
    myapiViewController *apiViw = [[myapiViewController alloc]init]; 
    [apiViw textdata]; 

    int kn = [apiViw buttonstate]; 
    NSLog(@"the value is %ld",(long)kn); 
} 
+0

在你的情況下,它實際上是指向零這就是爲什麼你得到j = 0。這是因爲它爲視圖控制器創建了一個新的引用。我認爲你必須在tests.m文件中添加這些方法並手動傳遞值。 – 2015-04-06 14:20:20

+0

請爲我闡述先生 – 2015-04-07 04:38:09

回答

0

你要做的alloc init,因爲由於這個實例變量變爲零。試試這個 -

在ViewController.m -

-(int) buttonstate { 

long i = self.searchTxt.text.length; 

if (i > 0) { 
    self.searchBtn.enabled = YES; 
} 
else 
{ 
    self.searchBtn.enabled = NO; 
} 

if ([self.searchBtn isEnabled]) { 
    j = 1; 
} 
else  
j = 0; 


NSLog(@" j value is %d",j); 

return j; 
} 

在ViewControllerTests.m -

- (void)testExample { 
    // This is an example of a functional test case. 
    XCTAssert(YES, @"Pass"); 
    self.vcToTest.searchTxt = [[UITextField alloc] init]; 
    self.vcToTest.searchBtn = [[UIButton alloc] init]; 

    self.vcToTest.searchTxt.text = @"test"; 
    int kn = [self.vcToTest buttonstate];  
    NSLog(@"the value is %ld",(long)kn); 
} 

檢查隨附的屏幕截圖輸出 - enter image description here

+0

先生我有UItextField和UiButton當用戶點擊和textField包含數據然後按鈕將啓用我想在測試用例中的測試用例我將給searchtextField.text = @「xxx」然後檢查j = 1,那麼測試用例buttonenabled會通過XCTAssertEqual(j,1),我正在嘗試那個事情先生。 – 2015-04-07 08:42:26

+0

先生,我有一個疑問,先生加載視圖,如果我不調用方法textData,如果我把seachtextField.text = @「xxxxx」那麼按鈕不啓用,如果我打電話的方法,然後按鈕啓用爲什麼?先生爲什麼它不能識別它 – 2015-04-07 09:23:25

+0

檢查我更新的代碼。因爲您正在測試文件中調用viewcontroller的方法。所以當你從test.m實際上在viewcontroller中傳遞searchtextField的數據時,它將獲得nil。所以要避免這個,你必須做alloc init。 – 2015-04-07 09:53:34